1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
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 other 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 process
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 keys stored securely on a hardware token]].
|