FreeCalypso > hg > fc-sim-tools
comparison doc/GrcardSIM2-security-model @ 18:da6e9d0b2ee6
data, doc, scripts: import from previous fc-pcsc-tools repo
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 14 Mar 2021 07:57:09 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
17:372ecc4aa2c4 | 18:da6e9d0b2ee6 |
---|---|
1 GrcardSIM2 cards (previously sold as sysmoSIM-GR2 and now being reintroduced as | |
2 FCSIM1) have two different ADM access levels, each guarded by a separate secret | |
3 code. These two ADM access levels are referred to as ADM and SUPER ADM in the | |
4 Osmocom wiki page for GrcardSIM2, but they can also be called ADM5 and ADM11, | |
5 as the access level numbers appear in the actual APDUs. | |
6 | |
7 If you successfully authenticate with ADM5 secret code, you gain the following | |
8 abilities: | |
9 | |
10 * You can change the ADM5 secret code itself; | |
11 * You can reset PIN1, PIN2, PUK1 and PUK2 to new codes without having to know | |
12 any previous ones. | |
13 | |
14 If you successfully authenticate with ADM11 secret code, you gain the following | |
15 abilities: | |
16 | |
17 * You can change the ADM11 secret code itself; | |
18 * You can reset PIN1, PIN2, PUK1, PUK2 and ADM5 to new codes without having to | |
19 know any previous ones. | |
20 | |
21 Most admin-write-only files are writable after either ADM5 or ADM11 | |
22 authentication, but some files (particularly EF.WEKI that holds Ki) can only be | |
23 read and written with ADM11. More precisely, if a given access condition | |
24 (returned in response to SELECT) is listed as ADM11, then you need to | |
25 authenticate with ADM11, but if it is listed as ADM5, then either ADM5 or ADM11 | |
26 is acceptable. Because of this permissive design whereby ADM11 alone is | |
27 sufficient, one can typically ignore ADM5 altogether for programming purposes. | |
28 | |
29 Both ADM5 and ADM11 can be set to any arbitrary string of 8 bytes, i.e., each | |
30 is effectively a 64-bit key. However, it is common for users to treat ADM5 | |
31 and/or ADM11 as being a string of 8 ASCII-encoded decimal digits like standard | |
32 PUK1/PUK2 - the initial default ADM11 secret code from Grcard factory is set to | |
33 64-bit hex string 3838383838383838, which corresponds to PIN/PUK-style decimal | |
34 88888888. | |
35 | |
36 fc-simtool provides commands to set and verify ADM5 and ADM11 secret codes in | |
37 either full hex or ASCII-encoded decimal representation; the former allows any | |
38 arbitrary 64-bit key to be entered, whereas the latter is restricted to those | |
39 64-bit keys which correspond to 8 ASCII-encoded decimal digits. The commands | |
40 are: | |
41 | |
42 verify-ext 5 XXXXXXXX # authenticate as ADM5, decimal format | |
43 verify-hex 5 xxxxxxxxxxxxxxxx # authenticate as ADM5, arbitrary hex format | |
44 | |
45 verify-ext 11 XXXXXXXX # authenticate as ADM11, decimal format | |
46 verify-hex 11 xxxxxxxxxxxxxxxx # authenticate as ADM11, arbitrary hex format | |
47 | |
48 grcard2-set-adm5 XXXXXXXX # set new ADM5, decimal format | |
49 grcard2-set-adm5-hex xxxxxxxxxxxxxxxx # set new ADM5, arbitrary hex format | |
50 | |
51 grcard2-set-super XXXXXXXX # set new ADM11, decimal format | |
52 grcard2-set-super-hex xxxxxxxxxxxxxxxx # set new ADM11, arbitrary hex format | |
53 | |
54 ADM11 MF quirk | |
55 ============== | |
56 | |
57 The operation of authenticating with ADM11 (verify-ext 11 or verify-hex 11) is | |
58 only allowed when the currently selected directory is MF - either as the very | |
59 first command in an fc-simtool session, or after an explicit 'select MF'. If | |
60 the current directory is DF_GSM or DF_TELECOM, the command to authenticate with | |
61 ADM11 (VERIFY CHV with P2=0x0B) fails with SW of 0x9802. | |
62 | |
63 Setting PIN1/PIN2/PUK1/PUK2 | |
64 =========================== | |
65 | |
66 The following commands reset standard PIN and PUK secret codes after | |
67 authenticating with either ADM5 or ADM11: | |
68 | |
69 grcard2-set-pin1 XXXX | |
70 grcard2-set-pin2 XXXX | |
71 grcard2-set-puk1 XXXXXXXX | |
72 grcard2-set-puk2 XXXXXXXX | |
73 | |
74 These 4 commands take decimal string arguments and send them to the card in | |
75 ASCII encoding per standard SIM spec definition of PIN1/PIN2/PUK1/PUK2. | |
76 | |
77 The underlying command APDUs sent by fc-simtool grcard2-set-* commands are | |
78 proprietary to Grcard. If you craft the right APDUs manually in hex (which our | |
79 low-level apdu command allows), you can set PIN1/PIN2/PUK1/PUK2 to arbitrary | |
80 64-bit hex strings which do not correspond to ASCII-encoded decimal - however, | |
81 doing so would produce a SIM that violates the public interface definition for | |
82 standard PIN1/PIN2/PUK1/PUK2, hence we do not provide such ability in our | |
83 high-level grcard2-set-* command set. | |
84 | |
85 FCSIM1 default PINs | |
86 =================== | |
87 | |
88 The initial default ADM11 secret code from Grcard factory is decimal 88888888, | |
89 meaning that you need to authenticate as follows: | |
90 | |
91 select MF | |
92 verify-ext 11 88888888 | |
93 | |
94 If your card is unprogrammed (if you haven't programmed it yourself with | |
95 fc-simtool), all other secret codes should be regarded as unknown - you need to | |
96 reset them yourself in your own card programming or provisioning operation. | |
97 Our fcsim1-default-pins command script sets the following FCSIM1 official | |
98 defaults: | |
99 | |
100 grcard2-set-pin1 1234 | |
101 grcard2-set-pin2 6666 | |
102 grcard2-set-puk1 00099933 | |
103 grcard2-set-puk2 00099944 | |
104 grcard2-set-adm5 55501234 | |
105 | |
106 For as long as you keep the ADM11 secret code at its default of 88888888, there | |
107 is no PIN security - even if you set PIN1/PIN2/PUK1/PUK2 to your own secrets, | |
108 anyone can authenticate with the unchanged default ADM11 and then freely reset | |
109 all lower PINs. However, in the Mother's opinion there is very little need for | |
110 PIN security in actual operational usage in this day and age - almost no one | |
111 enables their PIN1, making it moot, and no one ever uses SIM "parental control" | |
112 features controlled by PIN2. In the present circumstances, the only real use | |
113 for knowing SIM PINs is to exercise and test phone firmware code paths dealing | |
114 with these PINs - and for this purpose having known fixed "secret" codes is | |
115 very convenient. | |
116 | |
117 However, if someone does desire real PIN security, it *is* possible on FCSIM1 | |
118 cards - but then you have to not only set PIN1/PIN2/PUK1/PUK2 to your own | |
119 secrets, but also set both ADM5 and ADM11 to your own truly-secret codes as | |
120 well. But be careful - if you set your own ADM11 secret code and then forget | |
121 it, there is no recovery! Maintaining a database of per-card secret codes is a | |
122 development job which the Mother gladly leaves to other programmers, to be | |
123 undertaken if and when someone actually needs such added complexity. | |
124 | |
125 How to (not) brick your card | |
126 ============================ | |
127 | |
128 The following actions will brick your card beyond recovery: | |
129 | |
130 * If you enter ADM11 incorrectly 3 times in a row, ADM11 access is lost with no | |
131 possibility of recovery - this bricking mode is generally expected, there can | |
132 be no other way. | |
133 | |
134 * If you enter ADM5 incorrectly 3 times in a row, you unrecoverably lose the | |
135 ability to use ADM5 ever again - even if you successfully authenticate with | |
136 ADM11 and reset ADM5 with grcard2-set-adm5, the attempt counter does not get | |
137 reset, and ADM5 remains blocked. | |
138 | |
139 * If you enter standard PUK1 or PUK2 incorrectly 10 times in a row, it is | |
140 similarly blocked beyond recovery, with no help from ADM5 or ADM11 - | |
141 grcard2-set-puk[12] commands reset the secret code, but not the associated | |
142 attempt counter. |