I strive to develop reliable and maintainable software, with an eye toward improving the tools of our craft. * Experience ** 2014 – present: software engineer at Airbus CyberSecurity *** Research I took part in the [[https://paclido.fr][PACLIDO project]], a French government-funded project gathering industrial and academic partners in order to design and implement *lightweight authenticated encryption algorithms* and protocols. During the course of this project, - I implemented the reference version of Lilliput-AE, our submission to the [[https://csrc.nist.gov/projects/lightweight-cryptography][NIST Lightweight Cryptography Standardization Process]]. - I described this implementation in [[https://csrc.nist.gov/CSRC/media/Projects/Lightweight-Cryptography/documents/round-1/spec-doc/LILLIPUT-AE-spec.pdf][the algorithm's specification document]], comparing its performance to that of Ascon and ACORN, the lightweight winners of the [[https://competitions.cr.yp.to/caesar-submissions.html][CAESAR competition]]. - I extended the [[https://www.cryptolux.org/index.php/FELICS][FELICS]] benchmarking framework to support AEAD algorithms; we [[https://gitlab.inria.fr/minier/felics-ae/][published this fork]] and presented these improvements at the [[https://csrc.nist.gov/CSRC/media/Presentations/felics-ae-a-framework-to-benchmark-lightweight/images-media/session3-huynh-felics-ae.pdf][NIST LWC Workshop 2019]]. - I developed optimized software implementations for Lilliput-AE on the 16-bit MSP430 platform. *** Industrial development For four years, I helped develop a network monitoring appliance. My main role was *maintaining the codebase* for an in-house rule-matching engine: designing and implementing features, fixing bugs… Over the course of the project, I took part in many over activities: - I helped our project transition from manual software packaging to full-blown continuous integration, - I contributed extensively to our integration test suite, - I studied some mechanisms to improve the system's security (Secure Boot, TPMs) and helped implement others (LXC containers). - I reviewed all uses of cryptography in the system as part of our security certification process; this allowed me to get a good grasp of how filesystem encryption, VPNs, webservers, and repository authentication are configured in a free software distribution. - I supported our license team in assessing our use of free and open source software. ** 2014 (6 months): internship at Airbus CyberSecurity I extended an *Intrusion Detection System to authenticate and decrypt its ruleset using a Hardware Security Module*. This was a very informative foray into the world of cryptographic APIs, such as: - the [[https://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html][PKCS#11]] standard to communicate with hardware tokens, - the [[https://tools.ietf.org/html/rfc2315][PKCS#7]] format, and its successor [[https://tools.ietf.org/html/rfc5652][CMS]], to serialize encrypted and authenticated messages, - the [[https://tools.ietf.org/html/rfc5280][X.509]] standard to understand how PKIs work and how to parse certificates, - the [[http://luca.ntop.org/Teaching/Appunti/asn1.html][ASN.1]] format to reverse-engineer cryptic HSM errors, such as ECDSA signatures lacking the [[https://www.cryptsoft.com/pkcs11doc/v220/group__SEC__12__3__1__EC__SIGNATURES.html][zero-padding expected in PKCS#11]], - [[https://www.openssl.org/][OpenSSL]], to setup PKIs, [[https://stackoverflow.com/a/23422301/1503371][encrypt and sign rulesets, and generate CSRs for a key stored a hardware token]].