Daejun Park 0001

dblp:152/3639-1 · DBLP profile ↗
← Back
12ranked-venue papers
3as first author
1since 2021 · last 2021
0000-0003-1551-2597ORCID · conflict

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

Software engineering, systems software and programming languages · 9 · 3 first-author · 1 since 2021Artificial intelligence and machine learning · 2Systems, architecture and hardware · 1 · 1 since 2021Security and privacy · 1Graphics, computer vision, multimedia, augmented reality and games · 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
7 papers
Programming languages and type systems · 41% Compilers and program optimization · 20% Program verification · 19%
Network and information security
3 papers
Blockchain and cryptocurrency security · 40% Privacy and data protection · 40% Cryptographic primitives and cryptanalysis · 20%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Processor architecture and microarchitecture · 100%

Topics — the 26 heaviest of 28, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Blockchain and cryptocurrency security › smart contract analysis
smart contract verification
0.822020
End-to-End Formal Verification of Ethereum 2.0 Deposit Smart Contract · CAV (1) 2020
A formal verification tool for Ethereum VM bytecode · ESEC/SIGSOFT FSE 2018
Programming languages and type systems › program equivalence
bisimulation
0.512021
Language-parametric compiler validation with application to LLVM · ASPLOS 2021
Compilers and program optimization
compiler validation
0.512021
Language-parametric compiler validation with application to LLVM · ASPLOS 2021
Program verification › equivalence checking
program equivalence checking
0.512021
Language-parametric compiler validation with application to LLVM · ASPLOS 2021
Compilers and program optimization › verified compilation
translation validation
0.512021
Language-parametric compiler validation with application to LLVM · ASPLOS 2021
Programming languages and type systems
language semantics
0.432018
KJS: a complete formal semantics of JavaScript · PLDI 2015
A formal verification tool for Ethereum VM bytecode · ESEC/SIGSOFT FSE 2018
Semantics-based program verifiers for all languages · OOPSLA 2016
Cryptographic primitives and cryptanalysis
homomorphic encryption
0.412019
Logistic Regression on Homomorphic Encrypted Data at Scale · AAAI 2019
Privacy and data protection
privacy-preserving data analysis
0.412019
Logistic Regression on Homomorphic Encrypted Data at Scale · AAAI 2019
Privacy and data protection
privacy-preserving machine learning
0.412019
Logistic Regression on Homomorphic Encrypted Data at Scale · AAAI 2019
Programming languages and type systems › language semantics
formal semantics
0.412019
A complete formal semantics of x86-64 user-level instruction set architecture · PLDI 2019
Programming languages and type systems › language semantics › formal semantics
instruction set semantics
0.412019
A complete formal semantics of x86-64 user-level instruction set architecture · PLDI 2019
Processor architecture and microarchitecture
instruction set architecture
0.412019
A complete formal semantics of x86-64 user-level instruction set architecture · PLDI 2019
Processor architecture and microarchitecture › instruction set architecture › CISC
x86-64
0.412019
A complete formal semantics of x86-64 user-level instruction set architecture · PLDI 2019
Program verification
deductive verification
0.312018
A formal verification tool for Ethereum VM bytecode · ESEC/SIGSOFT FSE 2018
Programming languages and type systems › language semantics › formal semantics
executable semantics
0.212015
KJS: a complete formal semantics of JavaScript · PLDI 2015
Programming languages and type systems › language semantics › formal semantics
javascript semantics
0.212015
KJS: a complete formal semantics of JavaScript · PLDI 2015
Program analysis
symbolic execution
0.212015
KJS: a complete formal semantics of JavaScript · PLDI 2015
Program analysis › static analysis
abstract interpretation
0.212014
Global Sparse Analysis Framework · ACM Trans. Program. Lang. Syst. 2014
Program analysis › static analysis
scalable static analysis
0.212014
Global Sparse Analysis Framework · ACM Trans. Program. Lang. Syst. 2014
Program analysis › data flow analysis
sparse analysis
0.212014
Global Sparse Analysis Framework · ACM Trans. Program. Lang. Syst. 2014
Program analysis
static analysis
0.212014
Global Sparse Analysis Framework · ACM Trans. Program. Lang. Syst. 2014
Compilers and program optimization › code generation
instruction selection
0.112021
Language-parametric compiler validation with application to LLVM · ASPLOS 2021
Programming languages and type systems
bytecode verification
0.112020
End-to-End Formal Verification of Ethereum 2.0 Deposit Smart Contract · CAV (1) 2020
Programming languages and type systems › language semantics › formal semantics
operational semantics
0.112016
Semantics-based program verifiers for all languages · OOPSLA 2016
Software testing › specification-based testing
conformance testing
0.112015
KJS: a complete formal semantics of JavaScript · PLDI 2015
Program analysis › static analysis › abstract interpretation
relational analysis
0.112014
Global Sparse Analysis Framework · ACM Trans. Program. Lang. Syst. 2014

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

reachability logic · 0.9formal verification · 0.9instruction-level testing · 0.8executable semantics · 0.8theorem proving · 0.7abstraction and lemmas · 0.7language-parametric equivalence checking · 0.5cut-bisimulation · 0.5logistic regression · 0.4homomorphic encryption · 0.4matching logic · 0.2abstract interpretation · 0.2
YearPublicationVenuePosition
2021 Language-parametric compiler validation with application to LLVM
abstract
We propose a new design for a Translation Validation (TV) system geared towards practical use with modern optimizing compilers, such as LLVM. Unlike existing TV systems, which are custom-tailored for a particular sequence of transformations and a specific, common language for input and output programs, our design clearly separates the transformation-specific components from the rest of the system, and generalizes the transformation-independent components. Specifically, we present Keq, the first program equivalence checker that is parametric to the input and output language semantics and has no dependence on the transformation between the input and output programs. The Keq algorithm is based on a rigorous formalization, namely cut-bisimulation, and is proven correct. We have prototyped a TV system for the Instruction Selection pass of LLVM, being able to automatically prove equivalence for translations from LLVM IR to the MachineIR used in compiling to x86-64. This transformation uses different input and output languages, and as such has not been previously addressed by the state of the art. An experimental evaluation shows that Keq successfully proves correct the translation of over 90% of 4732 supported functions in GCC from SPEC 2006.
Theodoros Kasampalis, Daejun Park 0001, Zhengyao Lin, Vikram S. Adve, Grigore Rosu
ASPLOS2
2020 End-to-End Formal Verification of Ethereum 2.0 Deposit Smart Contract
abstract
We report our experience in the formal verification of the deposit smart contract, whose correctness is critical for the security of Ethereum 2.0, a new Proof-of-Stake protocol for the Ethereum blockchain. The deposit contract implements an incremental Merkle tree algorithm whose correctness is highly nontrivial, and had not been proved before. We have verified the correctness of the compiled bytecode of the deposit contract to avoid the need to trust the underlying compiler. We found several critical issues of the deposit contract during the verification process, some of which were due to subtle hidden bugs of the compiler.
Daejun Park 0001, Grigore Rosu
CAV (1)1
2020 A Learning-Based Approach to Synthesizing Invariants for Incomplete Verification Engines
abstract
Abstract We propose a framework for synthesizing inductive invariants for incomplete verification engines, which soundly reduce logical problems in undecidable theories to decidable theories. Our framework is based on the counterexample guided inductive synthesis principle and allows verification engines to communicate non-provability information to guide invariant synthesis. We show precisely how the verification engine can compute such non-provability information and how to build effective learning algorithms when invariants are expressed as Boolean combinations of a fixed set of predicates. Moreover, we evaluate our framework in two verification settings, one in which verification engines need to handle quantified formulas and one in which verification engines have to reason about heap properties expressed in an expressive but undecidable separation logic. Our experiments show that our invariant synthesis framework based on non-provability information can both effectively synthesize inductive invariants and adequately strengthen contracts across a large suite of programs. This work is an extended version of a conference paper titled “Invariant Synthesis for Incomplete Verification Engines”.
Daniel Neider, P. Madhusudan, Shambwaditya Saha, Pranav Garg 0001, Daejun Park 0001
J. Autom. Reason.5
2019 Logistic Regression on Homomorphic Encrypted Data at Scale
abstract
Machine learning on (homomorphic) encrypted data is a cryptographic method for analyzing private and/or sensitive data while keeping privacy. In the training phase, it takes as input an encrypted training data and outputs an encrypted model without ever decrypting. In the prediction phase, it uses the encrypted model to predict results on new encrypted data. In each phase, no decryption key is needed, and thus the data privacy is ultimately guaranteed. It has many applications in various areas such as finance, education, genomics, and medical field that have sensitive private data. While several studies have been reported on the prediction phase, few studies have been conducted on the training phase.In this paper, we present an efficient algorithm for logistic regression on homomorphic encrypted data, and evaluate our algorithm on real financial data consisting of 422,108 samples over 200 features. Our experiment shows that an encrypted model with a sufficient Kolmogorov Smirnow statistic value can be obtained in ∼17 hours in a single machine. We also evaluate our algorithm on the public MNIST dataset, and it takes ∼2 hours to learn an encrypted model with 96.4% accuracy. Considering the inefficiency of homomorphic encryption, our result is encouraging and demonstrates the practical feasibility of the logistic regression training on large encrypted data, for the first time to the best of our knowledge.
Kyoohyung Han, Seungwan Hong 0001, Jung Hee Cheon, Daejun Park 0001
AAAI4
2019 A complete formal semantics of x86-64 user-level instruction set architecture
abstract
We present the most complete and thoroughly tested formal semantics of x86-64 to date. Our semantics faithfully formalizes all the non-deprecated, sequential user-level instructions of the x86-64 Haswell instruction set architecture. This totals 3155 instruction variants, corresponding to 774 mnemonics. The semantics is fully executable and has been tested against more than 7,000 instruction-level test cases and the GCC torture test suite. This extensive testing paid off, revealing bugs in both the x86-64 reference manual and other existing semantics. We also illustrate potential applications of our semantics in different formal analyses, and discuss how it can be useful for processor verification.
Sandeep Dasgupta, Daejun Park 0001, Theodoros Kasampalis, Vikram S. Adve, Grigore Rosu
PLDI2
2018 KEVM: A Complete Formal Semantics of the Ethereum Virtual Machine
abstract
A developing field of interest for the distributed systems and applied cryptography communities is that of smart contracts: self-executing financial instruments that synchronize their state, often through a blockchain. One such smart contract system that has seen widespread practical adoption is Ethereum, which has grown to a market capacity of 100 billion USD and clears an excess of 500,000 daily transactions. Unfortunately, the rise of these technologies has been marred by a series of costly bugs and exploits. Increasingly, the Ethereum community has turned to formal methods and rigorous program analysis tools. This trend holds great promise due to the relative simplicity of smart contracts and bounded-time deterministic execution inherent to the Ethereum Virtual Machine (EVM). Here we present KEVM, an executable formal specification of the EVM's bytecode stack-based language built with the K Framework, designed to serve as a solid foundation for further formal analyses. We empirically evaluate the correctness and performance of KEVM using the official Ethereum test suite. To demonstrate the usability, several extensions of the semantics are presented. and two different-language implementations of the ERC20 Standard Token are verified against the ERC20 specification. These results are encouraging for the executable semantics approach to language prototyping and specification.
Everett Hildenbrandt, Manasvi Saxena, Nishant Rodrigues, Xiaoran Zhu, Philip Daian, Dwight Guth, Brandon M. Moore, Daejun Park 0001, Andrei Stefanescu, Grigore Rosu
CSF8
2018 A Language-Independent Approach to Smart Contract Verification
Xiaohong Chen 0002, Daejun Park 0001, Grigore Rosu
ISoLA (4)2
2018 A formal verification tool for Ethereum VM bytecode
abstract
In this paper, we present a formal verification tool for the Ethereum Virtual Machine (EVM) bytecode. To precisely reason about all possible behaviors of the EVM bytecode, we adopted KEVM, a complete formal semantics of the EVM, and instantiated the K-framework's reachability logic theorem prover to generate a correct-by-construction deductive verifier for the EVM. We further optimized the verifier by introducing EVM-specific abstractions and lemmas to improve its scalability. Our EVM verifier has been used to verify various high-profile smart contracts including the ERC20 token, Ethereum Casper, and DappHub MakerDAO contracts.
Daejun Park 0001, Manasvi Saxena, Philip Daian, Grigore Rosu
ESEC/SIGSOFT FSE1
2018 Invariant Synthesis for Incomplete Verification Engines
Daniel Neider, Pranav Garg 0001, P. Madhusudan, Shambwaditya Saha, Daejun Park 0001
TACAS (1)5
2016 Semantics-based program verifiers for all languages
abstract
We present a language-independent verification framework that can be instantiated with an operational semantics to automatically generate a program verifier. The framework treats both the operational semantics and the program correctness specifications as reachability rules between matching logic patterns, and uses the sound and relatively complete reachability logic proof system to prove the specifications using the semantics. We instantiate the framework with the semantics of one academic language, KernelC, as well as with three recent semantics of real-world languages, C, Java, and JavaScript, developed independently of our verification infrastructure. We evaluate our approach empirically and show that the generated program verifiers can check automatically the full functional correctness of challenging heap-manipulating programs implementing operations on list and tree data structures, like AVL trees. This is the first approach that can turn the operational semantics of real-world languages into correct-by-construction automatic verifiers.
Andrei Stefanescu, Daejun Park 0001, Shijiao Yuwen, Grigore Rosu
OOPSLA2
2015 KJS: a complete formal semantics of JavaScript
abstract
This paper presents KJS, the most complete and throughly tested formal semantics of JavaScript to date. Being executable, KJS has been tested against the ECMAScript 5.1 conformance test suite, and passes all 2,782 core language tests. Among the existing implementations of JavaScript, only Chrome V8's passes all the tests, and no other semantics passes more than 90%. In addition to a reference implementation for JavaScript, KJS also yields a simple coverage metric for a test suite: the set of semantic rules it exercises. Our semantics revealed that the ECMAScript 5.1 conformance test suite fails to cover several semantic rules. Guided by the semantics, we wrote tests to exercise those rules. The new tests revealed bugs both in production JavaScript engines (Chrome V8, Safari WebKit, Firefox SpiderMonkey) and in other semantics. KJS is symbolically executable, thus it can be used for formal analysis and verification of JavaScript programs. We verified non-trivial programs and found a known security vulnerability.
Daejun Park 0001, Andrei Stefanescu, Grigore Rosu
PLDI1
2014 Global Sparse Analysis Framework
abstract
In this article, we present a general method for achieving global static analyzers that are precise and sound, yet also scalable. Our method, on top of the abstract interpretation framework, is a general sparse analysis technique that supports relational as well as nonrelational semantics properties for various programming languages. Analysis designers first use the abstract interpretation framework to have a global and correct static analyzer whose scalability is unattended. Upon this underlying sound static analyzer, analysis designers add our generalized sparse analysis techniques to improve its scalability while preserving the precision of the underlying analysis. Our method prescribes what to prove to guarantee that the resulting sparse version should preserve the precision of the underlying analyzer. We formally present our framework and show that existing sparse analyses are all restricted instances of our framework. In addition, we show more semantically elaborate design examples of sparse nonrelational and relational static analyses. We then present their implementation results that scale to globally analyze up to one million lines of C programs. We also show a set of implementation techniques that turn out to be critical to economically support the sparse analysis process.
Hakjoo Oh, Kihong Heo, Wonchan Lee, Woosuk Lee, Daejun Park 0001, Jeehoon Kang, Kwangkeun Yi
ACM Trans. Program. Lang. Syst.5