In particular, side-channel attacks
on Elliptic Curve Cryptography implementations often assume a white-box attacker with detailed knowledge of the target implementation
details. However, due to the complex and layered nature of ECC, there are many implementation choices that a developer makes to obtain a
functional and interoperable implementation. These include the curve model, coordinate system, addition formulas, scalar multipliers, or
lower-level details such as the finite-field multiplication algorithm. Moreover, the complexity further rises due to the application of various
side-channel and fault-injection countermeasures. This situation creates a gap between the white-box attackers(often considered in academic
and commercial evaluation contexts) and a real-world attacker that usually only has black-box access to the target - i.e., has no access to the
source code nor specific implementation choices used. Yet, when the gap is closed, even real-world implementations of ECC succumb to
side-channel attacks, as evidenced by [1] and [2].
This tutorial covers the topic of reverse-engineering, using the side-channel analysis (SCA), implementations of ECC, which is used in the
TLS protocol, document signing, and blockchain applications (e.g., the Bitcoin protocol), among others. Since the tutorial is hands-on, the
participants will perform exercises, including reverse-engineering well-known implementations running on a simple embedded target. In
particular, we show how to infer details about ECC implementations, most notably the scalar multiplier, both from the general characteristic
of power traces but also using more sophisticated methods, utilizing attack-based, structural, and behavioral characteristics. The demo,
examples, and exercises utilize two open-source libraries micro-ecc
and sca25519. We will also discuss other most commonly used open-
source ECC libraries, which show a surprisingly wide variety of implementation details.
The main goal of the tutorial is to introduce to the audience the most common ECC implementation approaches and side-channel techniques
to learn them. We concentrate on so-called passive SCA, i.e., we assume that the attacker only monitors the side channels and does not
attempt to affect the functionality of the device. For majority of the practical exercises we will be using Python Elliptic Curve cryptography
Side-Channel Analysis toolkit (pyecsca).
References
[1] J. Jancar, V. Sedlacek, P. Svenda a M. Sys, „Minerva: the curse of ECDSA nonces,“ IACR
TCHES, p. 281–308, 2020. URL: https://tches.iacr.org/index.php/TCHES/article/view/8684
[2] T. Roche, V. Lomné, C. Mutschler a L. Imbert, „A side journey to Titan.,“ USENIX Security, p.
231–248, 2021. URL: https://www.usenix.org/conference/usenixsecurity21/presentation/roche