summaryrefslogtreecommitdiff
path: root/personal/cv/cv.org
blob: 72aa9344fd369860a47b551d30b6d38a51bd0e62 (plain)
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]].