Darius Mercadier's Website

Welcome to my website! I am a PhD student at LIP6 in Sorbonne Université. I work on a programming language called Usuba (and its compiler), which is designed to write cryptographic primitives, and generate high-throughput and secured C codes, based on a programming technique called bitslicing. I'm currently writing some blog posts about Usuba; check them out if you are interested! Or, feel free to checkout the papers I (co)wrote about Usuba.

My main areas of interest when it comes to computer science and research are programming languages, compilers, virtual machines and garbage collectors.

Feel free to contact me at my gmail address (firstname dot lastname).

My Papers

Here are all the papers about Usuba I have published during my PhD (sorted chronologically):

  • Sonia Belaïd, Pierre-Evariste Dagand, Darius Mercadier, Matthieu Rivain, Raphael Wintersdorff, Tornado: Automatic Generation of Probing-Secure Masked Bitsliced Implementations, Eurocrypt 2020. (link available soon)

    Extends Usuba to interact with tightPROVE, in order to produce proved-secured cipher implementations.

  • Pantea Kiaei, Darius Mercadier, Pierre-Evariste Dagand, Karine Heydemann, Patrick Schaumont, SKIVA: Flexible and Modular Side-channel and Fault Countermeasures. COSADE 2020. (link available soon)

    Uses Usuba to generate bitslice code for a custom CPU architecture embedding instructions to protect against side-channel attacks.

  • Darius Mercadier, Pierre-Evariste Dagand, Usuba: High-Throughput and Constant-Time Ciphers, by Construction, PLDI 2019. (link)

    Generalizes the WPMVP'18 paper. Details the semantics and design choices of Usuba. Evaluates Usuba on a few well known ciphers against state-of-the-art implementations.

  • Darius Mercadier, Pierre-Évariste Dagand, Lionel Lacassagne, Gilles Muller, Usuba, Optimizing & Trustworthy Bitslicing Compiler. WPMVP 2018. (link)

    Introduces Usuba, using bitslice DES as an example, and targeting various SIMD architectures (AltiVec, Neon, SSE, AVX, AVX-512).

My Presentations

I occasionally present my research during conferences, classes and other events. Below are some presentation supports that I have used recently, and will give you an idea of what I'm working on:

  • June 2019: Technical presentation of Usuba @PLDI'19 (link)
  • February 2019: High-level presentation of Usuba @Inria's Junior Seminar (link)
  • Timeless: One-pager presentation of Usuba (link)

Other activities

  • I worked as a intern at Google in the V8 team in the summer 2019. I was trying to reduce memory fragmentation of the JavaScript heap by improving the freelists. More details in my end-of-internship presentation and in this small document I wrote to summarize my work! Feel free to also checkout my freelists implementations in V8's source code!
  • I am also a teaching assistant at Sorbonne Université, where I do (or have done) exercise/lab sessions in the following courses:
    • 5I554/SVP (proving programs using Coq) in 2018 and 2019
    • 4I504/CA (advanced compilation) in 2020. You can find the project I wrote for 2020 here (in french).
    • 4I501/DLP (compilation) in 2019 and 2020
    • 3I002/POBJ (advanced object oriented programming in Java) in 2018
    • 2I001 (advanced C) in 2019
    • 1I001 (initiation to programming and Python) in 2018
  • I answer Perl questions on StackOverflow when I have something interesting to answer. Have a look at my profile to see more.
  • I solve programming puzzles, and write quite a lot of code, including:
    • Advent of code 2019: an advent calendar of programming puzzles of increasing difficulties. Those puzzles are really original and challenging, and you should definitely give them a try! If you are stuck, feel free to have a look at my solutions!
    • StackExchange's Code Golf & coding challenges: programming puzzles were the goal if often to write the shortest code possible to solve them. It's a very good exercise for creativity, and to learn all corners cases and hidden features of your language! You can find my 170ish answers here.
    • Project Euler: programming puzzles often requiring some mathematics to be solved efficiently. I have solved about 90 of those problems, but I keep my solutions private as requested by the site's author(s).
    • A small comparison of the performances of some programming languages on the Sieve of Eratosthenes. Even though other people have done more complete comparisons before, it's still useful to have a small-scale version!