Research Interests

I am broadly interested in computer systems and programming languages. My research so far has been focused on developing techniques for Software Fault Isolation and Information Flow Control. I have also worked for a considerable time on compiler optimizations and analysis. This research spanned over two years at my bachelors and a year and a half at Microsoft Research, India in the Programming Languages and Systems group.

  • Confidentiality in low level languages using compiler techniques:
    We have been tackling the problem of tracking confidential data in low level languages and preventing it from explicitly leaking in the presence of active attackers. This is a significantly difficult problem since languages like C don't enforce type-safety, memory safety or control flow integrity(CFI). We came up with an approach that takes a middle ground to static and dynamic techniques. We require the user to add lightweight annotations to the source code to identify private data. Our compiler then performs a static data flow analysis to propagate these taints throughout the program and ensures confidentiality by inserting checks around loads and stores. To make the checks practical, we enclosed the private and public data in non-overlapping memory regions which reduces the checks to mere bound comparisons, and we leveraged Intel MPX and Segment registers in x64 for the same. We also came up with a weak but secure form of CFI which is just enough to achieve our goal of noninterference while keeping the CFI overheads very low. The work is presently under submission.

  • Code generation for stencil computations on spherical domains:
    The problem revolves around performing stencil computations for a large number of points on a thin spherical surface for applications like weather or ocean simulations around the globe. We came up with efficient strategies for smashing the sphere and creating a memory layout that minimizes cache misses. The execution is appropriately tiled in time and space to ensure minimum memory usage while significantly reducing the execution time. We designed and implemented a DSL for specifying the domains and the computations which we then compile into C with the help of AlphaZ equational programming language