Similarity of smart cards based on their performance

The actual performance of tested card when executing required algorithm can be used as useful side-channel for fingerprinting purposes.


Using performance results for many cards, we calculated how much individual pairs of cards differ in the performance of selected important operations (so-called TOP FUNCTIONS).

Each cell in the table represents the (di-) similarity of two cards. A value close to 100% means that these two cards are very similar, whereas going to 0% mean significant dissimilarity. When a cursor is placed above value, tooltip showing difference in supported algorithms of exact two cards appears.

From the practical experience, we can say that pair of cards with similarity value over 95% means either the identical card type or both being members of the same product family with same underlying hardware and very similar implementation of JavaCard Virtual Machine. The similarity in the range of 85% - 95% usually signals the same family of cards yet with detectable differences (possibly different co-processor for some of the supported algorithms). The global average is about 70%, with similarity below 50% encountered for cards from completely different manufacturers.


Why does it work?

In contrast to ordinary computers, smart cards are on one side more deterministic (usually, no processes running in parallel) yet more specialized on the hardware level. There is not "just" single general purpose CPU running compiled cryptographic algorithm, but a set of specialized circuits dedicated to the acceleration of particular cryptographic algorithm (DES, AES, RSA, ECC co-processor), all optimized for the maximum speed and minimum die space. Performance measurements of cryptographic algorithms can be therefore used as a card's fingerprint which cannot be easily manipulated on the higher software level. For example, one cannot re-implement faster RSA on the card's main CPU to mimic the speed of another card. The fastest achievable modular multiplication, on that particular card, is given by the performance of card's co-processor circuit and cannot be improved by the main CPU.


Higher percentage = more similar G+D Smartcafe 3.2 72K G+D Smartcafe 6.0 80K G+D Smartcafe Expert 4.x V2 Gemplus GXP R4 72K Infineon CJTOP 80K INF SLJ 52GLA080AL M8.4 JavaCOS A22 CR-ECC-SHA-2 JavaCOS A22 JavaCOS A40 JC30M48CR NXP CJ3A081 NXP J2A080 80K NXP J2D081 80K NXP J3A080 NXP JCOP21 v2.4.2R3 NXP JCOP31 v2.4.1 72K NXP JCOP41 v2.2.1 72K NXP JCOP 21 V2.2 36K NXP JCOP 31 V2.2 36K NXP JCOP CJ2A081 NXP JCOP J3D081 Oberthur ID-ONE Cosmo 64 RSA v5.4 Softlock SLCOS InfineonSLE78
G+D Smartcafe 3.2 72K 67.36 67.18 69.46 65.23 61.60 53.43 51.95 56.62 67.14 80.13 70.82 82.64 67.46 77.41 75.27 73.62 72.42 65.37 58.33 48.37 61.25
G+D Smartcafe 6.0 80K 67.36 64.72 67.88 85.10 81.13 79.83 78.76 80.47 91.05 84.59 82.55 81.22 72.97 82.95 87.54 80.45 80.67 88.91 59.54 41.39 82.08
G+D Smartcafe Expert 4.x V2 67.18 64.72 57.06 68.41 63.49 61.33 60.57 66.32 69.49 71.52 65.99 70.62 62.40 72.30 69.30 64.73 64.55 70.28 52.57 35.17 68.36
Gemplus GXP R4 72K 69.46 67.88 57.06 66.09 78.04 56.44 55.41 58.99 69.01 72.54 69.38 71.26 64.94 72.17 69.00 66.05 66.11 68.61 58.35 42.69 59.16
Infineon CJTOP 80K INF SLJ 52GLA080AL M8.4 65.23 85.10 68.41 66.09 77.88 81.48 80.32 78.49 80.55 78.89 72.17 76.73 65.16 80.79 78.56 72.96 73.06 81.83 58.53 37.28 83.03
JavaCOS A22 CR-ECC-SHA-2 61.60 81.13 63.49 78.04 77.88 92.82 90.66 88.17 80.24 74.87 69.83 69.83 56.50 79.35 80.77 70.90 70.83 88.32 41.60 31.98 81.55
JavaCOS A22 53.43 79.83 61.33 56.44 81.48 92.82 97.43 92.00 79.57 70.05 66.67 65.74 56.50 74.07 75.34 67.07 67.75 85.88 42.79 28.74 86.42
JavaCOS A40 51.95 78.76 60.57 55.41 80.32 90.66 97.43 92.19 79.05 68.96 65.38 64.68 55.42 73.09 74.54 66.36 67.14 85.35 41.86 27.00 86.17
JC30M48CR 56.62 80.47 66.32 58.99 78.49 88.17 92.00 92.19 83.28 73.99 70.30 70.33 61.54 76.53 83.00 77.98 78.74 87.64 48.19 25.65 86.39
NXP CJ3A081 67.14 91.05 69.49 69.01 80.55 80.24 79.57 79.05 83.28 85.18 86.66 81.70 75.11 82.64 90.88 83.92 84.49 90.93 54.72 37.51 85.29
NXP J2A080 80K 80.13 84.59 71.52 72.54 78.89 74.87 70.05 68.96 73.99 85.18 83.79 94.80 74.78 90.29 92.02 86.38 85.22 82.64 57.50 45.35 79.37
NXP J2D081 80K 70.82 82.55 65.99 69.38 72.17 69.83 66.67 65.38 70.30 86.66 83.79 82.19 87.76 76.09 89.17 89.84 88.79 79.45 63.77 42.43 72.17
NXP J3A080 82.64 81.22 70.62 71.26 76.73 69.83 65.74 64.68 70.33 81.70 94.80 82.19 75.83 87.52 90.96 87.72 86.46 78.35 59.37 46.95 76.76
NXP JCOP21 v2.4.2R3 67.46 72.97 62.40 64.94 65.16 56.50 56.50 55.42 61.54 75.11 74.78 87.76 75.83 66.18 83.42 90.61 90.39 66.90 67.08 42.71 64.99
NXP JCOP31 v2.4.1 72K 77.41 82.95 72.30 72.17 80.79 79.35 74.07 73.09 76.53 82.64 90.29 76.09 87.52 66.18 89.16 81.63 81.09 84.80 52.56 44.17 79.78
NXP JCOP41 v2.2.1 72K 75.27 87.54 69.30 69.00 78.56 80.77 75.34 74.54 83.00 90.88 92.02 89.17 90.96 83.42 89.16 90.22 90.36 88.22 65.80 43.48 81.76
NXP JCOP 21 V2.2 36K 73.62 80.45 64.73 66.05 72.96 70.90 67.07 66.36 77.98 83.92 86.38 89.84 87.72 90.61 81.63 90.22 97.16 80.24 68.83 45.20 76.57
NXP JCOP 31 V2.2 36K 72.42 80.67 64.55 66.11 73.06 70.83 67.75 67.14 78.74 84.49 85.22 88.79 86.46 90.39 81.09 90.36 97.16 80.35 68.79 43.80 77.01
NXP JCOP CJ2A081 65.37 88.91 70.28 68.61 81.83 88.32 85.88 85.35 87.64 90.93 82.64 79.45 78.35 66.90 84.80 88.22 80.24 80.35 49.80 37.48 84.95
NXP JCOP J3D081 58.33 59.54 52.57 58.35 58.53 41.60 42.79 41.86 48.19 54.72 57.50 63.77 59.37 67.08 52.56 65.80 68.83 68.79 49.80 37.49 49.86
Oberthur ID-ONE Cosmo 64 RSA v5.4 48.37 41.39 35.17 42.69 37.28 31.98 28.74 27.00 25.65 37.51 45.35 42.43 46.95 42.71 44.17 43.48 45.20 43.80 37.48 37.49 29.71
Softlock SLCOS InfineonSLE78 61.25 82.08 68.36 59.16 83.03 81.55 86.42 86.17 86.39 85.29 79.37 72.17 76.76 64.99 79.78 81.76 76.57 77.01 84.95 49.86 29.71