David A. Naumann

dblp:39/2319 · DBLP profile ↗
← Back
62ranked-venue papers
18as first author
8since 2021 · last 2025
0000-0002-7634-6150ORCID · verified

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

Software engineering, systems software and programming languages · 25 · 5 first-author · 4 since 2021Theory of computation · 17 · 13 first-author · 2 since 2021Security and privacy · 16 · 1 first-author · 2 since 2021Applied, interdisciplinary, general and emerging computing · 3Databases, data management, data science and information retrieval · 2 · 2 first-authorComputer networks · 1Human-computer interaction and ubiquitous computing · 1
YearPublicationVenuePosition
2025 Alignment complete relational Hoare logics for some and all
abstract
In relational verification, judicious alignment of computational steps facilitates proof of relations between programs using simple relational assertions. Relational Hoare logics (RHL) provide compositional rules that embody various alignments of executions. Seemingly more flexible alignments can be expressed in terms of product automata based on program transition relations. A single degenerate alignment rule (sequential composition), atop a complete Hoare logic, comprises a RHL for $\forall\forall$ properties that is complete in the sense of Cook. The notion of alignment completeness was previously proposed as an additional measure, and some rules were shown to be alignment complete with respect to a few ad hoc forms of alignment automata. This paper proves alignment completeness with respect to a general class of $\forall\forall$ alignment automata, for a RHL comprised of standard rules together with a rule of semantics-preserving rewrites based on Kleene algebra with tests. A new logic for $\forall\exists$ properties is introduced and shown to be sound and alignment complete for a new general class of automata. The $\forall\forall$ and $\forall\exists$ automata are shown to be semantically complete. Thus both logics are complete in the sense of Cook. The paper includes discussion of why alignment is not the only important principle for relational reasoning and proposes entailment completeness as further means to evaluate RHLs.
Ramana Nagasamudram, Anindya Banerjee 0001, David A. Naumann
Log. Methods Comput. Sci.3
2023 Assume but Verify: Deductive Verification of Leaked Information in Concurrent Applications
abstract
We consider the problem of specifying and proving the security of non-trivial, concurrent programs that intentionally leak information. We present a method that decomposes the problem into (a) proving that the program only leaks information it has declassified via assume annotations already widely used in deductive program verification; and (b) auditing the declassifications against a declarative security policy. We show how condition (a) can be enforced by an extension of the existing program logic SecCSL, and how (b) can be checked by proving a set of simple entailments. Part of the challenge is to define respective semantic soundness criteria and to formally connect these to the logic rules and policy audit. We support our methodology in an auto-active program verifier, which we apply to verify the implementations of various case study programs against a range of declassification policies.
Toby C. Murray, Mukesh Tiwari, Gidon Ernst, David A. Naumann
CCS4
2023 Toward Tool-Independent Summaries for Symbolic Execution
Frederico Ramos, Nuno Sabino, Pedro Adão, David A. Naumann, José Fragoso Santos
ECOOP4
2023 The WhyRel Prototype for Modular Relational Verification of Pointer Programs
abstract
Abstract Verifying relations between programs arises as a task in various verification contexts such as optimizing transformations, relating new versions of programs with older versions (regression verification), and noninterference. However, relational verification for programs acting on dynamically allocated mutable state is not well supported by existing tools, which provide a high level of automation at the cost of restricting the programs considered. Auto-active tools, on the other hand, require more user interaction but enable verification of a broader class of programs. This article presents WhyRel, a tool for the auto-active verification of relational properties of pointer programs based on relational region logic. WhyRel is evaluated through verification case studies, relying on SMT solvers orchestrated by the Why3 platform on which it builds. Case studies include establishing representation independence of ADTs, showing noninterference, and challenge problems from recent literature.
Ramana Nagasamudram, Anindya Banerjee 0001, David A. Naumann
TACAS (2)3
2023 Special issue: 35th IEEE Computer Security Symposium - CSF 2022
abstract
types to ensure confidentiality, integrity, and availability properties.Additionally, they present an extension to the calculus that supports secret sharing as a form of declassification.We thank the authors for their work and the referees for timely and informative reviews.In fact some of these papers benefitted from CSF's processes for major revisions and previously rejected papers.Thus there were multiple rounds of review and revision prior to the JCS reviews.
Stefano Calzavara, David A. Naumann
J. Comput. Secur.2
2023 An Algebra of Alignment for Relational Verification
abstract
Relational verification encompasses information flow security, regression verification, translation validation for compilers, and more. Effective alignment of the programs and computations to be related facilitates use of simpler relational invariants and relational procedure specs, which in turn enables automation and modular reasoning. Alignment has been explored in terms of trace pairs, deductive rules of relational Hoare logics (RHL), and several forms of product automata. This article shows how a simple extension of Kleene Algebra with Tests (KAT), called BiKAT, subsumes prior formulations, including alignment witnesses for forall-exists properties, which brings to light new RHL-style rules for such properties. Alignments can be discovered algorithmically or devised manually but, in either case, their adequacy with respect to the original programs must be proved; an explicit algebra enables constructive proof by equational reasoning. Furthermore our approach inherits algorithmic benefits from existing KAT-based techniques and tools, which are applicable to a range of semantic models.
Timos Antonopoulos, Eric Koskinen, Ton Chanh Le, Ramana Nagasamudram, David A. Naumann, Minh Ngo
Proc. ACM Program. Lang.5
2022 A Relational Program Logic with Data Abstraction and Dynamic Framing
abstract
Dedicated to Tony Hoare. In a paper published in 1972, Hoare articulated the fundamental notions of hiding invariants and simulations. Hiding: invariants on encapsulated data representations need not be mentioned in specifications that comprise the API of a module. Simulation: correctness of a new data representation and implementation can be established by proving simulation between the old and new implementations using a coupling relation defined on the encapsulated state. These results were formalized semantically and for a simple model of state, though the paper claimed this could be extended to encompass dynamically allocated objects. In recent years, progress has been made toward formalizing the claim, for simulation, though mainly in semantic developments. In this article, hiding and simulation are combined with the idea in Hoare’s 1969 paper: a logic of programs. For an object-based language with dynamic allocation, we introduce a relational Hoare logic with stateful frame conditions that formalizes encapsulation, hiding of invariants, and couplings that relate two implementations. Relations and other assertions are expressed in first-order logic. Specifications can express a wide range of relational properties such as conditional equivalence and noninterference with declassification. The proof rules facilitate relational reasoning by means of convenient alignments and are shown sound with respect to a conventional operational semantics. A derived proof rule for equivalence of linked programs directly embodies representation independence. Applicability to representative examples is demonstrated using an SMT-based implementation.
Anindya Banerjee 0001, Ramana Nagasamudram, David A. Naumann, Mohammad Nikouei
ACM Trans. Program. Lang. Syst.3
2021 Alignment Completeness for Relational Hoare Logics
abstract
Relational Hoare logics (RHL) provide rules for reasoning about relations between programs. Several RHLs include a rule we call sequential product that infers a relational correctness judgment from judgments of ordinary Hoare logic (HL). Other rules embody sensible patterns of reasoning and have been found useful in practice, but sequential product is relatively complete on its own (with HL). As a more satisfactory way to evaluate RHLs, a notion of alignment completeness is introduced, in terms of the inductive assertion method and product automata. Alignment completeness results are given to account for several different sets of rules. The notion may serve to guide the design of RHLs and relational verifiers for richer programming languages and alignment patterns.
Ramana Nagasamudram, David A. Naumann
LICS2
2020 Type-Based Declassification for Free
Minh Ngo, David A. Naumann, Tamara Rezk
ICFEM2
2020 Thirty-Seven Years of Relational Hoare Logic: Remarks on Its Principles and History
David A. Naumann
ISoLA (2)1
2020 Verified sequential Malloc/Free
abstract
We verify the functional correctness of an array-of-bins (segregated free-lists) single-thread malloc/free system with respect to a correctness specification written in separation logic. The memory allocator is written in standard C code compatible with the standard API; the specification is in the Verifiable C program logic, and the proof is done in the Verified Software Toolchain within the Coq proof assistant. Our "resource-aware" specification can guarantee when malloc will successfully return a block, unlike the standard Posix specification that allows malloc to return NULL whenever it wants to. We also prove subsumption (refinement): the resource-aware specification implies a resource-oblivious spec.
Andrew W. Appel, David A. Naumann
ISMM2
2018 Assuming You Know: Epistemic Semantics of Relational Annotations for Expressive Flow Policies
abstract
Many high-level security requirements are about the allowed flow of information in programs, but are difficult to make precise because they involve selective downgrading. Quite a few mutually incompatible and ad-hoc approaches have been proposed for specifying and enforcing downgrading policies. Prior surveys of these approaches have not provided a unifying technical framework. Notions from epistemic logic have emerged as a good approach to policy semantics but are considerably removed from well developed static and dynamic enforcement techniques. We develop a unified framework for expressing, giving meaning and enforcing information downgrading policies that builds on commonly known and widely deployed concepts and techniques, especially static and dynamic assertion checking. These concepts should make information flow accessible and enable developers without special training to specify precise policies. The unified framework allows to directly compare different policy specification styles and enforce them by leveraging existing techniques.
Andrey Chudnov, David A. Naumann
CSF2
2018 A Logical Analysis of Framing for Specifications with Pure Method Calls
abstract
For specifying and reasoning about object-based programs, it is often attractive for contracts to be expressed using calls to pure methods. It is useful for pure methods to have contracts, including read effects, to support local reasoning based on frame conditions. This leads to puzzles such as the use of a pure method in its own contract. These ideas have been explored in connection with verification tools based on axiomatic semantics, guided by the need to avoid logical inconsistency, and focusing on encodings that cater for first-order automated provers. This article adds pure methods and read effects to region logic, a first-order program logic that features frame-based local reasoning and provides modular reasoning principles for end-to-end correctness. Modular reasoning is embodied in a proof rule for linking a module’s method implementations with a client that relies on the method contracts. Soundness is proved with respect to conventional operational semantics and uses an extensional (i.e, relational) interpretation of read effects. Applicability to tools based on SMT solvers is demonstrated through machine-checked verification of examples. The developments in this article can guide the implementations of linking as used in modular verifiers and serve as a basis for studying observationally pure methods and encapsulation.
Anindya Banerjee 0001, David A. Naumann, Mohammad Nikouei
ACM Trans. Program. Lang. Syst.2
2017 Hypercollecting semantics and its application to static analysis of information flow
abstract
We show how static analysis for secure information flow can be expressed and proved correct entirely within the framework of abstract interpretation. The key idea is to define a Galois connection that directly approximates the hyperproperty of interest. To enable use of such Galois connections, we introduce a fixpoint characterisation of hypercollecting semantics, i.e. a "set of sets" transformer. This makes it possible to systematically derive static analyses for hyperproperties entirely within the calculational framework of abstract interpretation. We evaluate this technique by deriving example static analyses. For qualitative information flow, we derive a dependence analysis similar to the logic of Amtoft and Banerjee (SAS '04) and the type system of Hunt and Sands (POPL '06). For quantitative information flow, we derive a novel cardinality analysis that bounds the leakage conveyed by a program instead of simply deciding whether it exists. This encompasses problems that are hypersafety but not k-safety. We put the framework to use and introduce variations that achieve precision rivalling the most recent and precise static analyses for information flow.
Mounir Assaf, David A. Naumann, Julien Signoles, Eric Totel, Frédéric Tronel
POPL2
2016 Calculational Design of Information Flow Monitors
abstract
Fine grained information flow monitoring can in principle address a wide range of security and privacy goals, for example in web applications. But it is very difficult to achieve sound monitoring with acceptable runtime cost and sufficient precision to avoid impractical restrictions on programs and policies. We present a systematic technique for design of monitors that are correct by construction. It encompasses policies with downgrading. The technique is based on abstract interpretation which is a standard basis for static analysis of programs. This should enable integration of a wide range of analysis techniques, enabling more sophisticated engineering of monitors to address the challenges of precision and scaling to widely used programming languages.
Mounir Assaf, David A. Naumann
CSF2
2016 Relational Logic with Framing and Hypotheses
abstract
Relational properties arise in many settings: relating two versions of a program that use different data representations, noninterference properties for security, etc. The main ingredient of relational verification, relating aligned pairs of intermediate steps, has been used in numerous guises, but existing relational program logics are narrow in scope. This paper introduces a logic based on novel syntax that weaves together product programs to express alignment of control flow points at which relational formulas are asserted. Correctness judgments feature hypotheses with relational specifications, discharged by a rule for the linking of procedure implementations. The logic supports reasoning about program-pairs containing both similar and dissimilar control and data structures. Reasoning about dynamically allocated objects is supported by a frame rule based on frame conditions amenable to SMT provers. We prove soundness and sketch how the logic can be used for data abstraction, loop optimizations, and secure information flow.
Anindya Banerjee 0001, David A. Naumann, Mohammad Nikouei
FSTTCS2
2016 Specifying and Verifying Advanced Control Features
Gary T. Leavens, David A. Naumann, Hridesh Rajan, Tomoyuki Aotani
ISoLA (2)2
2015 Inlined Information Flow Monitoring for JavaScript
abstract
Extant security mechanisms for web apps, notably the "same-origin policy", are not sufficient to achieve confidentiality and integrity goals for the many apps that manipulate sensitive information. The trend in web apps is "mashups" which integrate JavaScript code from multiple providers in ways that can undercut existing security mechanisms. Researchers are exploring dynamic information flow controls (IFC) for JavaScript, but there are many challenges to achieving strong IFC without excessive performance cost or impractical browser modifications. This paper presents an inlined IFC monitor for ECMAScript 5 with web support, using the no-sensitive-upgrade (NSU) technique, together with experimental evaluation using synthetic mashups and performance benchmarks. On this basis it should be possible to conduct experiments at scale to evaluate feasibility of both NSU and inlined monitoring.
Andrey Chudnov, David A. Naumann
CCS2
2015 Behavioral Subtyping, Specification Inheritance, and Modular Reasoning
abstract
Verification of a dynamically dispatched method call, E . m (), seems to depend on E ’s dynamic type. To avoid case analysis and allow incremental development, object-oriented program verification uses supertype abstraction. In other words, one reasons about E . m () using m ’s specification for E ’s static type. Supertype abstraction is valid when each subtype in the program is a behavioral subtype. This article semantically formalizes supertype abstraction and behavioral subtyping for a Java-like sequential language with mutation and proves that behavioral subtyping is both necessary and sufficient for the validity of supertype abstraction. Specification inheritance, as in JML, is also formalized and proved to entail behavioral subtyping.
Gary T. Leavens, David A. Naumann
ACM Trans. Program. Lang. Syst.2
2014 Information Flow Monitoring as Abstract Interpretation for Relational Logic
abstract
A number of systems have been developed for dynamic information flow control (IFC). In such systems, the security policy is expressed by labeling input and output channels, it is enforced by tracking and checking labels on data. Systems have been proven to enforce some form of noninterference (NI), formalized as a property of two runs of the program. In practice, NI is too strong and it is desirable to enforce some relaxation of NI that allows downgrading under constraints that have been classified as 'what', 'where', 'who', or 'when' policies. To encompass a broad range of policies, relational logic has been proposed as a means to specify and statically enforce policy. This paper shows how relational logic policies can be dynamically checked. To do so, we provide a new account of monitoring, in which the monitor state is viewed as an abstract interpretation of sets of pairs of program runs.
Andrey Chudnov, George Kuan, David A. Naumann
CSF3
2014 Guiding a general-purpose C verifier to prove cryptographic protocols
abstract
We describe how to verify security properties of C code for cryptographic protocols by using a general-purpose verifier. We prove security theorems in the symbolic model of cryptography. Our techniques include: use of ghost state to attach formal algebraic terms to concrete byte arrays and to detec t collisions when two distinct terms map to the same byte array; decoration of a crypto API with contracts based on symbolic terms; and expression of the attacker model in terms of C programs. We rely on the general-purpose verifier VCC; we guide VCC to prove security simply by writing suitable header files and annotations in implementation files, rather than by changing VCC itself. We formalize the symbolic model in Coq in order to justify the addition of axioms to VCC.
François Dupressoir, Andrew D. Gordon 0001, Jan Jürjens, David A. Naumann
J. Comput. Secur.4
2013 Laws of Programming for References
Giovanny Lucero, David A. Naumann, Augusto Sampaio 0001
APLAS2
2013 Local Reasoning for Global Invariants, Part II: Dynamic Boundaries
abstract
Dedicated to the memory of John C. Reynolds (1935--2013). The hiding of internal invariants creates a mismatch between procedure specifications in an interface and proof obligations on the implementations of those procedures. The mismatch is sound if the invariants depend only on encapsulated state, but encapsulation is problematic in contemporary software due to the many uses of shared mutable objects. The mismatch is formalized here in a proof rule that achieves flexibility via explicit restrictions on client effects, expressed using ghost state and ordinary first order assertions. The restrictions amount to a stateful frame condition that must be satisfied by any client; this dynamic encapsulation boundary complements conventional scope-based encapsulation. The technical development is based on a companion article, Part I, that presents Region Logic---a programming logic with stateful frame conditions for commands.
Anindya Banerjee 0001, David A. Naumann
J. ACM2
2013 Local Reasoning for Global Invariants, Part I: Region Logic
abstract
Dedicated to the memory of Stephen L. Bloom (1940--2010). Shared mutable objects pose grave challenges in reasoning, especially for information hiding and modularity. This article presents a novel technique for reasoning about error-avoiding partial correctness of programs featuring shared mutable objects, and investigates the technique by formalizing a logic. Using a first-order assertion language, the logic provides heap-local reasoning about mutation and separation, via ghost fields and variables of type “region” (finite sets of object references). A new form of frame condition specifies write, read, and allocation effects using region expressions; this supports a frame rule that allows a command to read state on which the framed predicate depends. Soundness is proved using a standard program semantics. The logic facilitates heap-local reasoning about object invariants, as shown here by examples. Part II of this article extends the logic with second-order framing which formalizes the hiding of data invariants.
Anindya Banerjee 0001, David A. Naumann, Stan Rosenberg
J. ACM2
2012 Decision Procedures for Region Logic
Stan Rosenberg, Anindya Banerjee 0001, David A. Naumann
VMCAI3
2012 Refactoring and representation independence for class hierarchies
David A. Naumann, Augusto Sampaio 0001, Leila Silva
Theor. Comput. Sci.1
2011 Guiding a General-Purpose C Verifier to Prove Cryptographic Protocols
abstract
We describe how to verify security properties of C code for cryptographic protocols by using a general-purpose verifier. We prove security theorems in the symbolic model of cryptography. Our techniques include: use of ghost state to attach formal algebraic terms to concrete byte arrays and to detect collisions when two distinct terms map to the same byte array, decoration of a crypto API with contracts based on symbolic terms, and expression of the attacker model in terms of C programs. We rely on the general-purpose verifier VCC, we guide VCC to prove security simply by writing suitable header files and annotations in implementation files, rather than by changing VCC itself. We formalize the symbolic model in Coq in order to justify the addition of axioms to VCC.
François Dupressoir, Andrew D. Gordon 0001, Jan Jürjens, David A. Naumann
CSF4
2011 Symbolic Analysis for Security of Roaming Protocols in Mobile Networks - [Extended Abstract]
Chunyu Tang, David A. Naumann, Susanne Wetzel
SecureComm2
2010 Information Flow Monitor Inlining
abstract
In recent years it has been shown that dynamic monitoring can be used to soundly enforce information flow policies. For programs distributed in source or bytecode form, the use of just-in-time (JIT) compilation makes it difficult to implement monitoring by modifying the language runtime system. An inliner avoids this problem and also serves to provide monitoring for more than one runtime. We show how to inline an information flow monitor, specifically a flow sensitive one previously proved to enforce termination insensitive noninterference. We prove that the inlined version is observationally equivalent to the original.
Andrey Chudnov, David A. Naumann
CSF2
2010 Refactoring and representation independence for class hierarchies: extended abstract
abstract
Refactoring transformations are important for productivity and quality in software evolution. Modular reasoning about semantics preserving transformations is difficult even in typed class-based languages because transformations can change the internal representations for multiple interdependent classes and because encapsulation can be violated by pointers to mutable objects. In this paper, an existing theory of representation independence for a single class, based on a simple notion of ownership confinement, is generalized to a hierarchy of classes and used to prove several refactoring laws. Soundness of these laws was an open problem in an ongoing project on formal refactoring tools. The utility of the laws is shown in a case study. Shortcomings of the theory are described as a challenge to other approaches to heap encapsulation and relational reasoning for classes.
Leila Silva, David A. Naumann, Augusto Sampaio 0001
FTfJP@ECOOP2
2010 Dynamic Boundaries: Information Hiding by Second Order Framing with First Order Assertions
David A. Naumann, Anindya Banerjee 0001
ESOP1
2008 Regional Logic for Local Reasoning about Global Invariants
Anindya Banerjee 0001, David A. Naumann, Stan Rosenberg
ECOOP2
2008 Expressive Declassification Policies and Modular Static Enforcement
abstract
This paper provides a way to specify expressive declassification policies, in particular, when, what, and where policies that include conditions under which downgrading is allowed. Secondly, an end-to-end semantic property is introduced, based on a model that allows observations of intermediate low states as well as termination. An attacker's knowledge only increases at explicit declassification steps, and within limits set by policy. Thirdly, static enforcement is provided by combining type-checking with program verification techniques applied to the small subprograms that carry out declassifications. Enforcement is proved sound for a simple programming language and the extension to object-oriented programs is described.
Anindya Banerjee 0001, David A. Naumann, Stan Rosenberg
SP2
2007 Modular verification of higher-order methods with mandatory calls specified by model programs
abstract
What we call a''higher-order method" (HOM) is a method that makes mandatory calls to other dynamically-dispatched methods. Examples include template methods as in the Template method design pattern and notify methods in the Observer pattern. HOMs are particularly difficult to reason about, because standard pre- and postcondition specifications cannot describe the mandatory calls. For reasoning about such methods, existing approaches use either higher order logic or traces, but both are complex and verbose.
Steve M. Shaner, Gary T. Leavens, David A. Naumann
OOPSLA3
2007 Beyond Stack Inspection: A Unified Access-Control and Information-Flow Security Model
abstract
Modern component-based systems, such as Java and Microsoft .NET common language runtime (CLR), have adopted stack-based access control (SBAC). Its purpose is to use stack inspection to verify that all the code responsible for a security-sensitive action is sufficiently authorized to perform that action. Previous literature has shown that the security model enforced by SBAC is flawed in that stack inspection may allow unauthorized code no longer on the stack to influence the execution of security-sensitive code. A different approach, history-based access control (HBAC), is safe but may prevent authorized code from executing a security-sensitive operation if less trusted code was previously executed. In this paper, we formally introduce information-based access control (IBAC), a novel security model that verifies that all and only the code responsible for a security-sensitive operation is sufficiently authorized. Given an access-control policy a, we present a mechanism to extract from it an implicit integrity policy i, and we prove that IBAC enforces i. Furthermore, we discuss large-scale application code scenarios to which IBAC can be successfully applied.
Marco Pistoia, Anindya Banerjee 0001, David A. Naumann
S&P3
2007 On assertion-based encapsulation for object invariants and simulations
abstract
Abstract In object-oriented programming, reentrant method invocations and shared references make it difficult to achieve adequate encapsulation for sound modular reasoning. This tutorial paper surveys recent progress using auxiliary state (ghost fields) to describe and achieve encapsulation. It also compares this technique with encapsulation in the forms provided by separation logic. Encapsulation is assessed in terms of modular reasoning about invariants and simulations.
David A. Naumann
Formal Aspects Comput.1
2007 Observational purity and encapsulation
David A. Naumann
Theor. Comput. Sci.1
2006 From Coupling Relations to Mated Invariants for Checking Information Flow
David A. Naumann
ESORICS1
2006 Deriving an Information Flow Checker and Certifying Compiler for Java
abstract
Language-based security provides a means to enforce end-to-end confidentiality and integrity policies in mobile code scenarios, and is increasingly being contemplated by the smart-card and mobile phone industry as a solution to enforce information flow and resource control policies. Two threads of work have emerged in research on language-based security: work that focuses on enforcing security policies for source code, which is tailored towards developers that want to increase confidence in their applications, and work that focuses on efficiently verifying similar policies for byte-code, which is tailored to code consumers that want to protect themselves against hostile applications. These lines of work serve different purposes - and thus have been developed independently - but connecting them is a key step towards the deployment of language-based security in practical applications. This paper introduces a systematic technique to connect source code and bytecode security type systems. The technique is applied to an information flow type system for a fragment of Java with exceptions, thus confronting challenges in both control and data flow tracking
Gilles Barthe, Tamara Rezk, David A. Naumann
S&P3
2006 Towards imperative modules: Reasoning about invariants and sharing of mutable state
David A. Naumann, Michael Barnett 0001
Theor. Comput. Sci.1
2005 State Based Ownership, Reentrance, and Encapsulation
Anindya Banerjee 0001, David A. Naumann
ECOOP2
2005 Observational Purity and Encapsulation
David A. Naumann
FASE1
2005 Ownership confinement ensures representation independence for object-oriented programs
abstract
Representation independence formally characterizes the encapsulation provided by language constructs for data abstraction and justifies reasoning by simulation. Representation independence has been shown for a variety of languages and constructs but not for shared references to mutable state; indeed it fails in general for such languages. This article formulates representation independence for classes, in an imperative, object-oriented language with pointers, subclassing and dynamic dispatch, class oriented visibility control, recursive types and methods, and a simple form of module. An instance of a class is considered to implement an abstraction using private fields and so-called representation objects. Encapsulation of representation objects is expressed by a restriction, called confinement, on aliasing. Representation independence is proved for programs satisfying the confinement condition. A static analysis is given for confinement that accepts common designs such as the observer and factory patterns. The formalization takes into account not only the usual interface between a client and a class that provides an abstraction but also the interface (often called “protected”) between the class and its subclasses.
Anindya Banerjee 0001, David A. Naumann
J. ACM2
2005 Stack-based access control and secure information flow
abstract
Access control mechanisms are often used with the intent of enforcing confidentiality and integrity policies, but few rigorous connections have been made between information flow and runtime access control. The Java virtual machine and the .NET runtime system provide a dynamic access control mechanism in which permissions are granted to program units and a runtime mechanism checks permissions of code in the calling chain. We investigate a design pattern by which this mechanism can be used to achieve confidentiality and integrity goals: a single interface serves callers of more than one security level and dynamic access control prevents release of high information to low callers. Programs fitting this pattern would be rejected by previous flow analyses. We give a static analysis that admits them, using permission-dependent security types. The analysis is given for a class-based object-oriented language with features including inheritance, dynamic binding, dynamically allocated mutable objects, type casts and recursive types. The analysis is shown to ensure a noninterference property formalizing confidentiality and integrity.
Anindya Banerjee 0001, David A. Naumann
J. Funct. Program.2
2004 Towards Imperative Modules: Reasoning about Invariants and Sharing of Mutable State
abstract
Imperative and object-oriented programs make ubiquitous use of shared mutable objects. Updating a shared object can and often does transgress a boundary that was supposed to be established using static constructs such as a class with private fields. This paper shows how auxiliary fields can be used to express two state-dependent encapsulation disciplines: ownership, a kind of separation, and local co-dependence, a kind of sharing. A methodology is given for specification and modular verification of encapsulated object invariants and shown sound for a class-based language.
David A. Naumann, Michael Barnett 0001
LICS1
2004 Friends Need a Bit More: Maintaining Invariants Over Shared State
Michael Barnett 0001, David A. Naumann
MPC2
2004 Modular and Constraint-Based Information Flow Inference for an Object-Oriented Language
Anindya Banerjee 0001, David A. Naumann
SAS3
2003 Using Access Control for Secure Information Flow in a Java-like Language
abstract
Access control mechanisms are widely used with the intent of enforcing confidentiality and other policies, but few formal connections have been made between information flow and access control. Java and C# are object-oriented languages that provide fine-grained access control. An access control list specifies local policy by authorizing permissions for principals (code sources) associated with class declarations; a mechanism called stack inspection checks permissions at run time. An example is given to show how this mechanism can be used to achieve confidentiality goals in situations where a single system call serves callers of differing confidentiality levels and dynamic access control prevents release of high information to low callers. A static analysis is given which applies to such examples. The analysis is shown to ensure a noninterference property formalizing confidentiality.
Anindya Banerjee 0001, David A. Naumann
CSFW2
2003 CodeBLUE: a Bluetooth interactive dance club system
abstract
This paper examines the use of Bluetooth for a collaborative music creation system called codeBLUE where the low cost, low power and small dimensions of Bluetooth technology are critical. Dancers using the codeBLUE system wear clothing incorporating Bluetooth-enabled sensors that measure and transmit information about the dancers' movements to a Bluetooth access point positioned in the demonstration area, which in turn forwards the information to a control system. The system software transforms the simple dance movements into musical modifications in real time, altering the melodic, rhythmic, and dynamic properties of the music stream in terms of MIDI parameters. A configuration console allows the DJ to modify the effects that each type of sensor produces, providing him or her yet another channel of creativity and keeping the codeBLUE experience fresh for participants. The paper describes the architecture, design, and hardware and software implementation of the codeBLUE proof-of-concept prototype. The paper also discusses our evaluation of the technology used for this application. The system has been successfully demonstrated to a live audience.
Dennis Hromin, Michael Chladil, Natalie Vanatta, David A. Naumann, Susanne Wetzel, Farooq Anjum, Ravi Jain
GLOBECOM4
2002 Secure Information Flow and Pointer Confinement in a Java-like Language
abstract
We consider a sequential object-oriented language with pointers and mutable state, private fields and class-based visibility, dynamic binding and inheritance, recursive classes, casts and type tests, and recursive methods. Programs are annotated with security levels, constrainedby security typing rules. A noninterference theorem shows how the rules ensure pointer confinement and secure information flow.
Anindya Banerjee 0001, David A. Naumann
CSFW2
2002 Representation independence, confinement and access control [extended abstract]
abstract
Denotational semantics is given for a Java-like language with pointers, subclassing and dynamic dispatch, class oriented visibility control, recursive types and methods, and privilege-based access control. Representation independence (relational parametricity) is proved, using a semantic notion of confinement similar to ones for which static disciplines have been recently proposed.
Anindya Banerjee 0001, David A. Naumann
POPL2
2002 Soundness of data refinement for a higher-order imperative language
David A. Naumann
Theor. Comput. Sci.1
2001 Ideal Models for Pointwise Relational and State-Free Imperative Programming
abstract
ABSTRACT Point-free relation calculus and its categorical generalizations have been fruitful in development of calculi of functional programming, especially for general principles, e.g., polytypic patterns of recursion on inductive data. But in specific applications, pointwise formulations can be more convenient and comprehensible than point-free combinators. A typed lambda calculus including non-injective patternmatching was given by de Moor and Gibbons, but their relational semantics has shortcomings. We give an alternative based on a categorical axiomatization of ideal relations. We give a second semantics based on predicate transformers, and show how the pattern construct offers a new integration of imperative and functional programming. Simulation results justify the semantics.
David A. Naumann
PPDP1
2001 Calculating sharp adaptation rules
David A. Naumann
Inf. Process. Lett.1
2001 Predicate transformer semantics of a higher-order imperative language with record subtyping
David A. Naumann
Sci. Comput. Program.1
2000 A Weakest Precondition Semantics for Refinement of Object-Oriented Programs
abstract
We define a predicate-transformer semantics for an object oriented language that includes specification constructs from refinement calculi. The language includes recursive classes, visibility control, dynamic binding, and recursive methods. Using the semantics, we formulate notions of refinement. Such results are a first step toward a refinement calculus.
Ana Cavalcanti 0001, David A. Naumann
IEEE Trans. Software Eng.2
1998 Beyond Fun: Order and Membership in Polytypic Imperative Programming
David A. Naumann
MPC1
1998 A Categorical Model for Higher Order Imperative Programming
David A. Naumann
Math. Struct. Comput. Sci.1
1995 Data Refinement, Call by Value and Higher Order Programs
abstract
Abstract Using 2-categorical laws of algorithmic refinement, we show soundness of data refinement for stored programs and hence for higher order procedures with value/result parameters. The refinement laws hold in a model that slightly generalizes the standard predicate transformer semantics for the usual imperative programming constructs including prescriptions.
David A. Naumann
Formal Aspects Comput.1
1995 Predicate Transformers and Higher-Order Programs
David A. Naumann
Theor. Comput. Sci.1
1994 Derivation of programs for freshmen
abstract
article Free Access Share on Derivation of programs for freshmen Authors: Richard Denman Southwestern University, Georgetown, Texas Southwestern University, Georgetown, TexasView Profile , David A. Naumann Southwestern University, Georgetown, Texas Southwestern University, Georgetown, TexasView Profile , Walter Potter Southwestern University, Georgetown, Texas Southwestern University, Georgetown, TexasView Profile , Gary Richter Southwestern University, Georgetown, Texas Southwestern University, Georgetown, TexasView Profile Authors Info & Claims ACM SIGCSE BulletinVolume 26Issue 1March 1994 pp 116–120https://doi.org/10.1145/191033.191077Published:12 March 1994Publication History 10citation238DownloadsMetricsTotal Citations10Total Downloads238Last 12 Months20Last 6 weeks3 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteeReaderPDF
Richard T. Denman, David A. Naumann, Walter Potter, Gary Richter
SIGCSE2
1994 A Recursion Theorem for Predicate Transformers on Inductive Data Types
David A. Naumann
Inf. Process. Lett.1