ATR statistics: TCK - Check byte TCK (conditional)

Article from the series "ATR statistics".

TCK - Check byte TCK (conditional)

The ISO 7816-3 specification is not public. So I can't copy/paste part of the text. I will use Wikipedia instead.
The ChecK byte (if present) allows a check of the integrity of the data in the ATR. If present, TCK is the Exclusive OR of the bytes in the ATR from T0 (included) to TCK (excluded).
TCK shall be present if and only if any of the TDi present in the ATR encodes a value of T other than 0.

TCK # %
1103 53.23 %
0x00 123 5.94 %
0x12 9 0.43 %
0x28 9 0.43 %
0x05 8 0.39 %
0x89 8 0.39 %
0x99 8 0.39 %
0xC1 8 0.39 %
0x03 7 0.34 %
0x09 7 0.34 %
0x0E 7 0.34 %
0x16 7 0.34 %
0x1C 7 0.34 %
0x38 7 0.34 %
0x43 7 0.34 %
0x65 7 0.34 %
0x88 7 0.34 %
0x8C 7 0.34 %
0xA5 7 0.34 %
0xB7 7 0.34 %
0x06 6 0.29 %
0x0D 6 0.29 %
0x15 6 0.29 %
0x1B 6 0.29 %
0x4A 6 0.29 %
0x52 6 0.29 %
0x59 6 0.29 %
0x5A 6 0.29 %
0x62 6 0.29 %
0x6A 6 0.29 %
0x6D 6 0.29 %
0x76 6 0.29 %
0x77 6 0.29 %
0x7A 6 0.29 %
0x7F 6 0.29 %
0x83 6 0.29 %
0x90 6 0.29 %
0x9C 6 0.29 %
0xA1 6 0.29 %
0xA9 6 0.29 %
0xF3 6 0.29 %
0xFF 6 0.29 %
0x-1 5 0.24 %
0x0A 5 0.24 %
0x0F 5 0.24 %
0x14 5 0.24 %
0x18 5 0.24 %
0x1E 5 0.24 %
0x31 5 0.24 %
0x3A 5 0.24 %
0x3C 5 0.24 %
0x45 5 0.24 %
0x58 5 0.24 %
0x6B 5 0.24 %
0x75 5 0.24 %
0x7E 5 0.24 %
0x80 5 0.24 %
0x84 5 0.24 %
0x8F 5 0.24 %
0x98 5 0.24 %
0xB6 5 0.24 %
0xBD 5 0.24 %
0xC4 5 0.24 %
0xCC 5 0.24 %
0xD2 5 0.24 %
0xDA 5 0.24 %
0xFE 5 0.24 %
0x07 4 0.19 %
0x17 4 0.19 %
0x19 4 0.19 %
0x1A 4 0.19 %
0x1D 4 0.19 %
0x21 4 0.19 %
0x24 4 0.19 %
0x32 4 0.19 %
0x39 4 0.19 %
0x3F 4 0.19 %
0x49 4 0.19 %
0x4C 4 0.19 %
0x5C 4 0.19 %
0x5E 4 0.19 %
0x60 4 0.19 %
0x63 4 0.19 %
0x68 4 0.19 %
0x6C 4 0.19 %
0x70 4 0.19 %
0x71 4 0.19 %
0x74 4 0.19 %
0x79 4 0.19 %
0x86 4 0.19 %
0x8A 4 0.19 %
0x91 4 0.19 %
0x95 4 0.19 %
0x9B 4 0.19 %
0x9D 4 0.19 %
0x9F 4 0.19 %
0xA0 4 0.19 %
0xA2 4 0.19 %
0xA6 4 0.19 %
0xB0 4 0.19 %
0xB4 4 0.19 %
0xBE 4 0.19 %
0xC9 4 0.19 %
0xD0 4 0.19 %
0xD6 4 0.19 %
0xE0 4 0.19 %
0xE1 4 0.19 %
0xE9 4 0.19 %
0xEC 4 0.19 %
0xF8 4 0.19 %
0x01 3 0.14 %
0x02 3 0.14 %
0x08 3 0.14 %
0x0C 3 0.14 %
0x1F 3 0.14 %
0x2A 3 0.14 %
0x30 3 0.14 %
0x33 3 0.14 %
0x3D 3 0.14 %
0x47 3 0.14 %
0x4D 3 0.14 %
0x4E 3 0.14 %
0x4F 3 0.14 %
0x53 3 0.14 %
0x55 3 0.14 %
0x57 3 0.14 %
0x5B 3 0.14 %
0x6F 3 0.14 %
0x72 3 0.14 %
0x78 3 0.14 %
0x7B 3 0.14 %
0x7D 3 0.14 %
0x82 3 0.14 %
0x92 3 0.14 %
0x94 3 0.14 %
0x97 3 0.14 %
0x9A 3 0.14 %
0x9E 3 0.14 %
0xA8 3 0.14 %
0xAA 3 0.14 %
0xAB 3 0.14 %
0xAD 3 0.14 %
0xB1 3 0.14 %
0xB9 3 0.14 %
0xBC 3 0.14 %
0xC2 3 0.14 %
0xC5 3 0.14 %
0xCF 3 0.14 %
0xD3 3 0.14 %
0xD4 3 0.14 %
0xD7 3 0.14 %
0xDF 3 0.14 %
0xEF 3 0.14 %
0xF2 3 0.14 %
0xF4 3 0.14 %
0xF7 3 0.14 %
0xFA 3 0.14 %
0x10 2 0.10 %
0x11 2 0.10 %
0x13 2 0.10 %
0x22 2 0.10 %
0x25 2 0.10 %
0x26 2 0.10 %
0x27 2 0.10 %
0x29 2 0.10 %
0x2B 2 0.10 %
0x2D 2 0.10 %
0x2E 2 0.10 %
0x35 2 0.10 %
0x36 2 0.10 %
0x3B 2 0.10 %
0x40 2 0.10 %
0x41 2 0.10 %
0x48 2 0.10 %
0x50 2 0.10 %
0x51 2 0.10 %
0x54 2 0.10 %
0x5D 2 0.10 %
0x5F 2 0.10 %
0x64 2 0.10 %
0x66 2 0.10 %
0x67 2 0.10 %
0x69 2 0.10 %
0x73 2 0.10 %
0x7C 2 0.10 %
0x85 2 0.10 %
0x87 2 0.10 %
0x8B 2 0.10 %
0x8D 2 0.10 %
0x8E 2 0.10 %
0xAC 2 0.10 %
0xAF 2 0.10 %
0xBA 2 0.10 %
0xBB 2 0.10 %
0xC3 2 0.10 %
0xC7 2 0.10 %
0xC8 2 0.10 %
0xD5 2 0.10 %
0xD8 2 0.10 %
0xDC 2 0.10 %
0xDD 2 0.10 %
0xDE 2 0.10 %
0xE4 2 0.10 %
0xE5 2 0.10 %
0xE8 2 0.10 %
0xEA 2 0.10 %
0xEB 2 0.10 %
0xF0 2 0.10 %
0xF6 2 0.10 %
0xFB 2 0.10 %
0xFC 2 0.10 %
0xFD 2 0.10 %
0x04 1 0.05 %
0x0B 1 0.05 %
0x23 1 0.05 %
0x2C 1 0.05 %
0x2F 1 0.05 %
0x3E 1 0.05 %
0x42 1 0.05 %
0x46 1 0.05 %
0x56 1 0.05 %
0x61 1 0.05 %
0x81 1 0.05 %
0x93 1 0.05 %
0x96 1 0.05 %
0xA3 1 0.05 %
0xA7 1 0.05 %
0xAE 1 0.05 %
0xB2 1 0.05 %
0xB3 1 0.05 %
0xB5 1 0.05 %
0xC6 1 0.05 %
0xCA 1 0.05 %
0xCB 1 0.05 %
0xCE 1 0.05 %
0xD1 1 0.05 %
0xD9 1 0.05 %
0xDB 1 0.05 %
0xE2 1 0.05 %
0xE3 1 0.05 %
0xEE 1 0.05 %
0xF1 1 0.05 %
0xF5 1 0.05 %
0xF9 1 0.05 %


A large part (53%) or ATR do not have a TCK. These cards are T=0 only.

Some ATR have a TCK of 0 but this value is invalid. For example with 3B 88 80 01 00 00 00 00 77 83 95 00 00.
In most cases the TCK has a value of 0 but that is because a pattern is used in the ATR matching. For example with 3B 8C 80 01 04 43 FD 00 00 00 00 00 00 00 00 00 00. The pattern used to match the ATR is "3B 8C 80 01 04 43 FD .. .. .. .. .. .. .. .. .. .." to accept any value for the "." but my program replaced any "." by a "0".

Some ATR should have an ATR but do NOT contain it. For example with 3B 9E 96 80 1F C7 80 31 E0 73 FE 21 1B 66 D0 01 77 97 0D 00. My parsing program indicates TCK = 0x-1 in this case but that is only a way to indicate a missing TCK. Only 4 ATRs are in this category.

Since the TCK is a checksum no special value is expected. So it is not surprising that the values from 1 to 255 have a mostly equal distribution.