This repository provides a prototype implementation of the Data-Oblivious Virtual Environment (DOVE) frontend for the R language. You can read more about this in our academic research paper, DOVE: A Data-Oblivious Virtual Environment, which appeared in NDSS 2021.
This is research code, and has not been certified for production use. That being said, if you see something, say something!
Install the following R packages to run the DOVE frontend:
rlangreadrRcpp
The examples folder contains R benchmark scripts that we used for evaluation. The ec-modified and pagerank folders contain scripts that use DOVE primitives directly, so you can simply run them on frontend by entering the following command:
cd src
R -f PATH_TO_SCRIPTThis will create a DOT in the file instr.asm.
Meanwhile, the scripts in the ec-original folder are benchmarks unmodified from their source. Thus, they require (automatic) transformation to use DOVE primitives to generate DOTs. For these scripts, run them on frontend by entering the following command:
cd src
R -f dove_automate.R --args PATH_TO_SCRIPTIn general, unmodified R scripts can typically be run with the above R invocation. While we do not claim complete coverage, the frontend transforms a number of functions that perform matrix operations. Please refer to our paper for more details.
If you make any use of this code for academic purposes, please cite as:
@inproceedings{lee2021dove,
author = {Hyun Bin Lee and Tushar M. Jois and Christopher W. Fletcher and Carl A. Gunter},
title = {{DOVE: A Data-Oblivious Virtual Environment}},
booktitle = {Network and Distributed System Security Symposium (NDSS)},
year = {2021}
}