diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -14,6 +14,11 @@ For more information on ECC support on JavaCards see the [GitHub page](https://c This project is developed by the [Centre for Research On Cryptography and Security](https://crocs.fi.muni.cz) at Faculty of Informatics, Masaryk University. + +> [!NOTE] +> The artifact for the CHES 2025 paper "*ECTester: Reverse-engineering side-channel countermeasures of ECC implementations*" is under the [analysis/countermeasures/](analysis/countermeasures/) directory. + + ## Contents - [Setup](#setup) @@ -47,8 +52,10 @@ git submodule update --init --recursive # To initialize submodules (JavaCa ./gradlew :standalone:libs # To build the native library shims. ./gradlew :standalone:uberJar # To build the standalone tool (jar) -> "standalone/build/libs/ECTesterStandalone.jar" ``` -The applet comes in several flavors, targeting JavaCard `2.2.1`, `2.2.2` and `3.0.5`. The `2.2.2` and later flavors +The applet comes in several flavors, targeting JavaCard `2.2.1`, `2.2.2`, `3.0.5`, and `3.2.0`. The `2.2.2` and later flavors support extended length APDUs which are necessary for some commands to work properly. +Which flavor you can build depends on which Java JDK version you have, see [this list](https://github.com/martinpaljak/ant-javacard/wiki/JavaCard-SDK-and-JDK-version-compatibility) +or the [applet build.gradle](applet/build.gradle.kts). To build the standalone part, which involves numerous cryptographic libraries, one has two options. - Install these cryptographic libraries system-wide and let the build use those. @@ -60,7 +67,7 @@ See the section on [setup](#setup-1) of standalone library testing for more deta The JavaCard part of ECTester targets testing elliptic curve cryptography implementations in programmable smart cards of the JavaCard platform, version 2.2.1 and up. The reader app supports many actions, the main one being [testing](#test): the running of predetermined test suites that test the JavaCard for support, performance and vulnerabilities. The other actions focus on data collection, [generating keys](#generate), [signing data](#ecdsa), [performing key agreement](#ecdh) or [exporting the preset curves](#export), output of the mentioned actions can then be analyzed using the Jupyter notebooks, see [analysis](#analysis). -1. Upload `applet/build/applet/ectester[221,222,305].cap` using your favorite tool (e.g., [GlobalPlatformPro tool](https://github.com/martinpaljak/GlobalPlatform)). +1. Upload `applet/build/applet/ectester[221,222,305,320].cap` using your favorite tool (e.g., [GlobalPlatformPro tool](https://github.com/martinpaljak/GlobalPlatform)). 2. Run `java -jar reader/build/libs/ECTesterReader.jar -t` or other data collection commands. 3. Inspect output log with annotated results. @@ -688,7 +695,8 @@ It is recommended to disable [CPU frequency scaling](https://wiki.archlinux.org/ ## Analysis -ECTester contains a few Jupyter notebooks that perform timing analysis on data generated by either the ECTester reader app or the standalone app. These notebooks currently operate on data from the ECDSA, ECDH or key generation commands. +ECTester contains a few Jupyter notebooks in the `analysis` directory that perform timing analysis on data generated by either the ECTester reader app or the standalone app. These notebooks currently operate on data from the ECDSA, ECDH or key generation commands. +Furthermore, the `analysis/countermeasures/` directory contains an artifact for the CHES 2025 paper "*ECTester: Reverse-engineering side-channel countermeasures of ECC implementations*". [](https://mybinder.org/v2/gh/crocs-muni/ECTester/master?filepath=analysis%2Fplot_dsa.ipynb) [](https://mybinder.org/v2/gh/crocs-muni/ECTester/master?filepath=analysis%2Fplot_dh.ipynnnb) [](https://mybinder.org/v2/gh/crocs-muni/ECTester/master?filepath=analysis%2Fplot_gen.ipynb) @@ -705,7 +713,7 @@ ECTester contains a few Jupyter notebooks that perform timing analysis on data g #### ECDSA timing analysis -To analyze ECDSA data, use the `plot_dsa.ipynb` notebook. Enter the options in the second cell, including filename, curve, desired time units and then simply run the following cells to obtain heatmaps of the timing data of ECDSA like those displayed below. +To analyze ECDSA data, use the `analysis/plot_dsa.ipynb` notebook. Enter the options in the second cell, including filename, curve, desired time units and then simply run the following cells to obtain heatmaps of the timing data of ECDSA like those displayed below.  This heatmap above is a heatmap of the most significant byte of ECDSA random nonces and the signature time, one can see that there is a clear dependency between certain most significant bits of the nonce and signature time. This is due to the scalar multiplication leaking via timing and was the issue behind [CVE-2019-14318](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-14318) in Crypto++. |
