Darius Mercadier's Website

Welcome to my website! Since December 1st 2020, I am a postdoctoral researcher at CryptoExperts. I mainly work on improving side-channel countermeasures for cryptographic code, and in particular masking countermeasures.

Before that, I was a PhD student at LIP6 in Sorbonne Université. During this PhD, I developped a programming language called Usuba (and its compiler), which is designed to write cryptographic primitives, and generate high-throughput and secure C code, based on a programming technique called bitslicing. Find out more about Usuba on its blog, or in my thesis, or on the video of my PhD defense.

My main areas of interest when it comes to computer science and research are programming languages, compilers, CPU microarchitecture, virtual machines, garbage collectors, software optimization and side-channel countermeasures.

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)

    Extends Usuba to interact with tightPROVE+, in order to produce cipher implementations that are provably secure against some side-channel attacks.

  • Pantea Kiaei, Darius Mercadier, Pierre-Evariste Dagand, Karine Heydemann, Patrick Schaumont, Custom Instruction Support for Modular Defense against Side-channel and Fault Attacks. COSADE 2020. (link)

    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:

  • November 2020: PhD defense (slides, video)
  • June 2019: Technical presentation of Usuba @PLDI'19 (slides, video)
  • February 2019: High-level presentation of Usuba @Inria's Junior Seminar (slides)

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 and 2021. You can find the project I wrote for 2020 here (in French; about garbage collection), and for 2021 there (in French; about compiling a simple language to a given bytecode).
    • 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!