Trevor Jim

dblp:21/2627 · DBLP profile ↗
← Back
24ranked-venue papers
8as first author
0since 2021 · last 2013
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 13 · 3 first-authorSecurity and privacy · 4 · 1 first-authorDatabases, data management, data science and information retrieval · 4 · 2 first-authorSystems, architecture and hardware · 3 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 2 · 1 first-authorComputer networks · 1Theory of computation · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
10 papers
Programming languages and type systems · 38% Program analysis · 29% Compilers and program optimization · 17%
Network and information security
6 papers
Web and mobile security · 39% Network security · 29% Systems and software security · 16%
Databases, data mining, and information retrieval
2 papers
Distributed and cloud data management · 43% Data models and query languages · 30% Query processing and optimization · 26%
Theoretical computer science
2 papers
Automata and formal languages · 73% Logic in computer science · 27%

Topics — the 30 heaviest of 41, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Web and mobile security
web security
0.222009
Using static analysis for Ajax intrusion detection · WWW 2009
Defeating script injection attacks with browser-enforced embedded policies · WWW 2007
Compilers and program optimization
parsing
0.112010
Semantics and algorithms for data-dependent grammars · POPL 2010
Automata and formal languages › formal grammars
context-free grammar
0.112010
Semantics and algorithms for data-dependent grammars · POPL 2010
Distributed and cloud data management
distributed query processing
0.122007
Highly distributed XQuery with DXQ · SIGMOD Conference 2007
Dynamically Distributed Query Evaluation · PODS 2001
Network security › intrusion detection and prevention
intrusion detection
0.112009
Using static analysis for Ajax intrusion detection · WWW 2009
Program analysis
control flow analysis
0.112009
Using static analysis for Ajax intrusion detection · WWW 2009
Program analysis
static analysis
0.112009
Using static analysis for Ajax intrusion detection · WWW 2009
Data models and query languages › XML query languages
XQuery
0.112007
Highly distributed XQuery with DXQ · SIGMOD Conference 2007
Web and mobile security › web security
browser security policy
0.112007
Defeating script injection attacks with browser-enforced embedded policies · WWW 2007
Network security
content filtering
0.112007
Defeating script injection attacks with browser-enforced embedded policies · WWW 2007
Programming languages and type systems
type inference
0.122005
Automatic discovery of covariant read-only fields · ACM Trans. Program. Lang. Syst. 2005
What Are Principal Typings and What Are They Good For? · POPL 1996
Programming languages and type systems › object-oriented programming
object calculi
0.112005
Automatic discovery of covariant read-only fields · ACM Trans. Program. Lang. Syst. 2005
Systems and software security
memory safety
0.012002
Cyclone: A Safe Dialect of C · USENIX ATC, General Track 2002
Operating systems › resource management
memory management
0.012002
Region-Based Memory Management in Cyclone · PLDI 2002
Operating systems › resource management › memory management
region-based memory management
0.012002
Region-Based Memory Management in Cyclone · PLDI 2002
Programming languages and type systems › type systems
type soundness
0.012002
Region-Based Memory Management in Cyclone · PLDI 2002
Query processing and optimization › parallel query processing
distributed query plan
0.012001
Dynamically Distributed Query Evaluation · PODS 2001
Query processing and optimization
query execution
0.012001
Dynamically Distributed Query Evaluation · PODS 2001
Authentication and access control
trust management
0.012001
SD3: A Trust Management System with Certified Evaluation · S&P 2001
Program verification › mechanized verification
proof checking
0.012001
SD3: A Trust Management System with Certified Evaluation · S&P 2001
Authentication and access control
certificate management
0.012000
Generalized Certificate Revocation · POPL 2000
Cryptographic protocols and secure computation › key management › public key infrastructure
certificate revocation
0.012000
Generalized Certificate Revocation · POPL 2000
Programming languages and type systems › type systems
intersection types
0.011996
What Are Principal Typings and What Are They Good For? · POPL 1996
Programming languages and type systems › lambda calculus
PCF
0.011996
Full Abstraction and the Context Lemma · SIAM J. Comput. 1996
Programming languages and type systems › type inference
principal types
0.011996
What Are Principal Typings and What Are They Good For? · POPL 1996
Programming languages and type systems › lambda calculus
simply typed lambda calculus
0.011996
Full Abstraction and the Context Lemma · SIAM J. Comput. 1996
Logic in computer science › semantics
denotational semantics
0.011996
Full Abstraction and the Context Lemma · SIAM J. Comput. 1996
Logic in computer science › semantics › denotational semantics
full abstraction
0.011996
Full Abstraction and the Context Lemma · SIAM J. Comput. 1996
Runtime systems and virtual machines
garbage collection
0.012002
Region-Based Memory Management in Cyclone · PLDI 2002
Cryptographic primitives and cryptanalysis
public-key cryptography
0.012000
Generalized Certificate Revocation · POPL 2000

Methods — techniques the papers use, named apart from their topics

random asynchronous requests · 0.2intrusion-prevention proxy · 0.2static analysis · 0.1message authentication code · 0.1binary rewriting · 0.1type system · 0.1remote invocation · 0.1code shipping · 0.1browser-enforced embedded policies · 0.1type constraint solving · 0.1complexity analysis · 0.1region effects · 0.0local type inference · 0.0proof checking · 0.0certificate retrieval · 0.0denotational semantics · 0.0rewriting semantics · 0.0context lemma · 0.0
YearPublicationVenuePosition
2013 Why is my smartphone slow? On the fly diagnosis of underperformance on the mobile Internet
abstract
The perceived end-to-end performance of the mobile Internet can be impacted by multiple factors including websites, devices, and network components. Constant changes in these factors and network complexity make identifying root causes of high latency difficult. In this paper, we propose a multidimensional diagnosis technique using passive IP flow data collected at ISPs for investigating factors that impact the performance of the mobile Internet. We implement and evaluate our technique over four days of data from a major US cellular provider's network. Our approach identifies several combinations of factors affecting performance. We investigate four combinations indepth to confirm the latency causes chosen by our technique. Our findings include a popular gaming website showing poor performance on a specific device type for over 50% of the flows and web browser traffic on older devices accounting for 99% of poorly performing traffic. Our technique can direct operators in choosing factors having high impact on latency in the mobile Internet.
Chaitrali Amrutkar, Matti A. Hiltunen, Trevor Jim, Kaustubh R. Joshi, Oliver Spatscheck, Patrick Traynor, Shobha Venkataraman
DSN3
2011 A New Method for Dependent Parsing
Trevor Jim, Yitzhak Mandelbaum
ESOP1
2010 Semantics and algorithms for data-dependent grammars
abstract
We present the design and theory of a new parsing engine, YAKKER, capable of satisfying the many needs of modern programmers and modern data processing applications. In particular, our new parsing engine handles (1) full scannerless context-free grammars with (2) regular expressions as right-hand sides for defining nonterminals. YAKKER also includes (3) facilities for binding variables to intermediate parse results and (4) using such bindings within arbitrary constraints to control parsing. These facilities allow the kind of data-dependent parsing commonly needed in systems applications, particularly those that operate over binary data. In addition, (5) nonterminals may be parameterized by arbitrary values, which gives the system good modularity and abstraction properties in the presence of data-dependent parsing. Finally, (6) legacy parsing libraries,such as sophisticated libraries for dates and times, may be directly incorporated into parser specifications. We illustrate the importance and utility of this rich collection of features by presenting its use on examples ranging from difficult programming language grammars to web server logs to binary data specification. We also show that our grammars have important compositionality properties and explain why such properties areimportant in modern applications such as automatic grammar induction.
Trevor Jim, Yitzhak Mandelbaum, David Walker 0001
POPL1
2009 Using static analysis for Ajax intrusion detection
abstract
We present a static control-flow analysis for JavaScript programs running in a web browser. Our analysis tackles numerous challenges posed by modern web applications including asynchronous communication, frameworks, and dynamic code generation. We use our analysis to extract a model of expected client behavior as seen from the server, and build an intrusion-prevention proxy for the server: the proxy intercepts client requests and disables those that do not meet the expected behavior. We insert random asynchronous requests to foil mimicry attacks. Finally, we evaluate our technique against several real applications and show that it protects against an attack in a widely-used web application.
Arjun Guha, Shriram Krishnamurthi, Trevor Jim
WWW3
2007 Highly distributed XQuery with DXQ
abstract
Many modern applications, from Grid computing to RSS handling, need to support data processing in a distributed environment. Currently, most such applications are implemented using a general purpose programming language, which can be expensive to maintain, hard to configure and modify, and require hand optimization of the distributed data processing operations. We present Distributed XQuery (DXQ), a simple, yet powerful, extension of XQuery to support distributed applications. This extension includes the ability to deploy networks of XQuery servers, to remotely invoke XQuery programs on those servers, and to ship code between servers. Our demonstration presents two applications implemented in DXQ: the resolution algorithm of DNS, the Domain Name System, and the Narada overlay-network protocol. We show that our system can flexibly accommodate different patterns of distributed computation and present some simple but essential distributed optimizations.
Mary F. Fernández, Trevor Jim, Kristi Morton, Nicola Onose, Jérôme Siméon
SIGMOD Conference2
2007 Defeating script injection attacks with browser-enforced embedded policies
abstract
Web sites that accept and display content such as wiki articles or comments typically filter the content to prevent injected script code from running in browsers that view the site. The diversity of browser rendering algorithms and the desire to allow rich content make filtering quite difficult, however, and attacks such as the Samy and Yamanner worms have exploited filtering weaknesses. This paper proposes a simple alternative mechanism for preventing script injection called Browser-Enforced Embedded Policies (BEEP). The idea is that a web site can embed a policy in its pages that specifies which scripts are allowed to run. The browser, which knows exactly when it will run a script, can enforce this policy perfectly. We have added BEEP support to several browsers, and built tools to simplify adding policies to web applications. We found that supporting BEEP in browsers requires only small and localized modifications, modifying web applications requires minimal effort, and enforcing policies is generally lightweight.
Trevor Jim, Nikhil Swamy, Michael Hicks 0001
WWW1
2006 Safe manual memory management in Cyclone
Nikhil Swamy, Michael Hicks 0001, J. Gregory Morrisett, Dan Grossman, Trevor Jim
Sci. Comput. Program.5
2006 System Call Monitoring Using Authenticated System Calls
abstract
System call monitoring is a technique for detecting and controlling compromised applications by checking at runtime that each system call conforms to a policy that specifies the program's normal behavior. Here, we introduce a new approach to implementing system call monitoring based on authenticated system calls. An authenticated system call is a system call augmented with extra arguments that specify the policy for that call, and a cryptographic message authentication code that guarantees the integrity of the policy and the system call arguments. This extra information is used by the kernel to verify the system call. The version of the application in which regular system calls have been replaced by authenticated calls is generated automatically by an installer program that reads the application binary, uses static analysis to generate policies, and then rewrites the binary with the authenticated calls. This paper presents the approach, describes a prototype implementation based on Linux and the PLTO binary rewriting system, and gives experimental results suggesting that the approach is effective in protecting against compromised applications at modest cost
Mohan Rajagopalan, Matti A. Hiltunen, Trevor Jim, Richard D. Schlichting
IEEE Trans. Dependable Secur. Comput.3
2005 Authenticated System Calls
abstract
System call monitoring is a technique for detecting and controlling compromised applications by checking at runtime that each system call conforms to a policy that specifies the program's normal behavior. A new approach to system call monitoring based on authenticated system calls is introduced. An authenticated system call is a system call augmented with extra arguments that specify the policy for that call and a cryptographic message authentication code (MAC) that guarantees the integrity of the policy and the system call arguments. This extra information is used by the kernel to verify the system call. The version of the application in which regular system calls have been replaced by authenticated calls is generated automatically by an installer program that reads the application binary, uses static analysis to generate policies, and then rewrites the binary with the authenticated calls. This paper presents the approach, describes a prototype implementation based on Linux and the PLTO binary rewriting system, and gives experimental results suggesting that the approach is effective in protecting against compromised applications at modest cost.
Mohan Rajagopalan, Matti A. Hiltunen, Trevor Jim, Richard D. Schlichting
DSN3
2005 Automatic discovery of covariant read-only fields
abstract
Read-only fields are useful in object calculi, pi calculi, and statically typed intermediate languages because they admit covariant subtyping, unlike updateable fields. For example, Glew's translation of classes and objects to an intermediate calculus relies crucially on covariant subtyping of read-only fields to ensure that subclasses are translated to subtypes.In this article, we present a type inference algorithm for an Abadi--Cardelli object calculus in which fields are marked either as updateable or as read-only. The type inference problem is P-complete, and our algorithm runs in O ( n 3 ) time. The same complexity results hold for the calculus in which the fields are not explicitly annotated as updateable or read-only; perhaps surprisingly, the annotations do not make type inference easier. We show that type inference is equivalent to the problem of solving type constraints, and this forms the core of our algorithm and implementation.
Jens Palsberg, Tian Zhao 0002, Trevor Jim
ACM Trans. Program. Lang. Syst.3
2004 Experience with safe manual memory-management in cyclone
abstract
The goal of the Cyclone project is to investigate type safety for low-level languages such as C. Our most difficult challenge has been providing programmers control over memory management while retaining type safety. This paper reports on our experience trying to integrate and effectively use two previously proposed, type-safe memory management mechanisms: statically-scoped regions and unique pointers. We found that these typing mechanisms can be combined to build alternative memory-management abstractions, such as reference counted objects and arenas with dynamic lifetimes, and thus provide a flexible basis. Our experience---porting C programs and building new applications for resource-constrained systems---confirms that experts can use these features to improve memory footprint and sometimes to improve throughput when used instead of, or in combination with, conservative garbage collection.
Michael Hicks 0001, J. Gregory Morrisett, Dan Grossman, Trevor Jim
ISMM4
2003 Compiling for template-based run-time code generation
abstract
Cyclone is a type-safe programming language that provides explicit run-time code generation. The Cyclone compiler uses a template-based strategy for run-time code generation in which pre-compiled code fragments are stitched together at run time. This strategy keeps the cost of code generation low, but it requires that optimizations, such as register allocation and code motion, are applied to templates at compile time. This paper describes a principled approach to implementing such optimizations. In particular, we generalize standard flow-graph intermediate representations to support templates, define a mapping from (a subset of) Cyclone to this representation, and describe a dataflow-analysis framework that supports standard optimizations across template boundaries.
Frederick Smith, Dan Grossman, J. Gregory Morrisett, Luke Hornof, Trevor Jim
J. Funct. Program.5
2003 iMobile EE - An Enterprise Mobile Service Platform
Yih-Farn Robin Chen, Huale Huang, Rittwik Jana, Trevor Jim, Matti A. Hiltunen, Sam John, Serban Jora, Radhakrishnan Muthumanickam, Bin Wei 0003
Wirel. Networks4
2002 Region-Based Memory Management in Cyclone
abstract
Cyclone is a type-safe programming language derived from C. The primary design goal of Cyclone is to let programmers control data representation and memory management without sacrificing type-safety. In this paper, we focus on the region-based memory management of Cyclone and its static typing discipline. The design incorporates several advancements, including support for region subtyping and a coherent integration with stack allocation and a garbage collector. To support separate compilation, Cyclone requires programmers to write some explicit region annotations, but a combination of default annotations, local type inference, and a novel treatment of region effects reduces this burden. As a result, we integrate C idioms in a region-based framework. In our experience, porting legacy C to Cyclone has required altering about 8% of the code; of the changes, only 6% (of the 8%) were region annotations.
Dan Grossman, J. Gregory Morrisett, Trevor Jim, Michael Hicks 0001, James Cheney
PLDI3
2002 Cyclone: A Safe Dialect of C
Trevor Jim, J. Gregory Morrisett, Dan Grossman, Michael Hicks 0001, James Cheney
USENIX ATC, General Track1
2001 Dynamically Distributed Query Evaluation
abstract
Distributed query evaluation usually assumes a fixed topology, where the set of servers and the partitioning of data on the servers is known in advance. Given a query expression, an optimizer will first produce a global plan, then assign
Trevor Jim, Dan Suciu
PODS1
2001 SD3: A Trust Management System with Certified Evaluation
abstract
We introduce SD3, a trust management system consisting of a high-level policy language, a local policy evaluation, and a certificate retrieval system. A unique feature of SD3 is its certified evaluator. As the evaluator computes the answer to a query, it also computes a proof that the answer follows from the security policy. Before the answer is returned, the proof is passed through a simple checker and incorrect proofs are reported as errors. The certified evaluator reduces the trusted computing base and greatly increases our confidence that the answers produced by the evaluator follow from the specification, despite complex optimizations. To illustrate SD3's capabilities, we show how to implement a secure name service, similar to DNSSEC, entirely in SD3.
Trevor Jim
S&P1
2000 Generalized Certificate Revocation
abstract
We introduce a language for creating and manipulating certificates, that is, digitally signed data based on public key cryptography, and a system for revoking certificates. Our approach provides a uniform mechanism for secure distribution of public key bindings, authorizations, and revocation information. An external language for the description of these and other forms of data is compiled into an intermediate language with a well-defined denotational and operational semantics. The internal language is used to carry out consistency checks for security, and optimizations for efficiency. Our primary contribution is a technique for treating revocation data dually to other sorts of information using a polarity discipline in the intermediate language.
Carl A. Gunter, Trevor Jim
POPL2
2000 Policy-directed certificate retrieval
abstract
Any large scale security architecture that uses certificates to provide security in a distributed system will need some automated support for moving certificates around in the network. We believe that for efficiency, this automated support should be tied closely to the consumer of the certificates: the policy verifier. As a proof of concept, we have built QCM, a prototype policy language and verifier that can direct a retrieval mechanism to obtain certificates from the network. Like previous verifiers, QCM takes a policy and certificates supplied by a requester and determines whether the policy is satisfied. Unlike previous verifiers, QCM can take further action if the policy is not satisfied: QCM can examine the policy to decide what certificates might help satisfy it and obtain them from remote servers on behalf of the requester. This takes place automatically, without intervention by the requester; there is no additional burden placed on the requester or the policy writer for the retrieval service we provide. We present examples that show how our technique greatly simplifies certificate-based secure applications ranging from key distribution to ratings systems, and that QCM policies are simple to write. We describe our implementation, and illustrate the operation of the prototype. Copyright © 2000 John Wiley & Sons, Ltd.
Carl A. Gunter, Trevor Jim
Softw. Pract. Exp.2
1999 Certifying Compilation and Run-Time Code Generation
Luke Hornof, Trevor Jim
PEPM2
1997 Shrinking lambda Expressions in Linear Time
abstract
Functional-language compilers often perform optimizations based on beta and delta reduction. To avoid speculative optimizations that can blow up the code size, we might wish to use only shrinking reduction rules guaranteed to make the program smaller: these include dead-variable elimination, constant folding, and a restricted beta rule that inlines only functions that are called just once. The restricted beta rule leads to a shrinking rewrite system that has not previously been studied. We show some efficient normalization algorithms that are immediately useful in optimizing compilers; and we give a confluence proof for our system, showing that the choice of normalization algorithm does not affect final code quality.
Andrew W. Appel, Trevor Jim
J. Funct. Program.2
1996 What Are Principal Typings and What Are They Good For?
abstract
We demonstrate the pragmatic value of the principal typing property, a property distinct from ML's principal type property, by studying a type system with principal typings. The type system is based on rank 2 intersection types and is closely related to ML. Its principal typing property provides elegant support for separate compilation, including "smartest recompilation" and incremental type inference. Moreover, it motivates a new rule for typing recursive definitions that can type some interesting examples of polymorphic recursion.
Trevor Jim
POPL1
1996 Full Abstraction and the Context Lemma
abstract
It is impossible to add a combinator to PCF to achieve full abstraction for models such as Berry’s stable domains in a way analogous to the addition of the “parallel-or” combinator that achieves full abstraction for the familiar complete partial order (cpo) model. In particular, we define a general notion of rewriting system of the kind used for evaluating simply typed $\lambda $-terms in Scott’s PCF. Any simply typed $\lambda $-calculus with such a “PCF-like” rewriting semantics is shown necessarily to satisfy Miler’s Context Lemma. A simple argument demonstrates that any denotational semantics that is adequate for PCF, and in which certain simple Boolean functionals exist, cannot be fully abstract for any extension of PCF satisfying the Context Lemma. An immediate corollary is that stable domains cannot be fully abstract for any extension of PCF definable by PCF-like rules.
Trevor Jim, Albert R. Meyer
SIAM J. Comput.1
1989 Continuation-Passing, Closure-Passing Style
abstract
We implemented a continuation-passing style (CPS) code generator for ML. Our CPS language is represented as an ML datatype in which all functions are named and most kinds of ill-formed expressions are impossible. We separate the code generation into phases that rewrite this representation into ever-simpler forms. Closures are represented explicitly as records, so that closure strategies can be communicated from one phase to another. No stack is used. Our benchmark data shows that the new method is an improvement over our previous, abstract-machine based code generator.
Andrew W. Appel, Trevor Jim
POPL2