Project

General

Profile

Download (10.4 KB) Statistics
| Branch: | Revision:
1
= Specification for IMSI Pseudonymization on the Radio Interface for 2G and Above
2

    
3
== Introduction
4

    
5
=== Protecting the IMSI on the Radio Interface is Desirable
6

    
7
A long-standing issue in the 3GPP specifications is, that mobile phones and
8
other mobile equipment (ME) have to send the International Mobile Subscriber
9
Identity (IMSI) unencrypted over the air. Each IMSI is uniquely identifying the
10
person who bought the associated Subscriber Identity Module (SIM) used in the
11
ME. Therefore most people can be uniquely identified by recording the IMSI that
12
their ME is sending. Efforts are made in the 2G and above specifications to
13
send the IMSI less often, by using the Temporary Mobile Subscriber Identity
14
(TMSI) where possible.
15

    
16
But this is not enough. So-called IMSI catchers were invented and are used to
17
not only record IMSIs when they have to be sent. But also to force ME to send
18
their IMSI by immitating a Base Transceiver Station (BTS). IMSI catchers have
19
become small and affordable, even criminals actors without much budget can use
20
them to track anybody with a mobile phone.
21

    
22
=== Summary of Proposed Solution
23

    
24
The solution presented in this document is to periodically change the IMSI of
25
the ME to a new pseudonymous IMSI allocated by the Home Location Register (HLR)
26
or Home Subscriber Service (HSS). The next pseudonymous IMSI is sent to the SIM
27
via Short Message Service (SMS), then a SIM applet overwrites the IMSI of the
28
SIM with the new value. The only component that needs to be changed in the
29
network besides the SIM is the HLR/HSS, therefore it should be possible even
30
for a Mobile Virtual Network Operator (MVNO) to deploy this privacy
31
enhancement.
32

    
33
=== Summary of Existing Location Updating Procedures in RAN and CN
34

    
35
The subscriber's SIM is provisioned with the IMSI and cryptographic keys of a
36
subscriber, after the subscriber was added with the same data to the HLR/HSS.
37
In the Remote Access Network (RAN), the IMSI is sent over the air interface and
38
then transmitted to the Core Network (CN), where it is validated by the
39
HLR/HSS. The involved components vary by the generation of the network and
40
whether the SIM is attempting a Circuit Switched (CS) or Packet Switched (PS)
41
connection, but the principle is the same. This document uses 2G CS Location
42
Updating for reference, as in <<figure-imsi-regular>>.
43

    
44
The IMSI is transmitted in the Location Updating Request from ME. The VLR
45
needs an authentication challenge specific to the secret keys on the SIM to
46
authenticate the SIM, and looks the authentication challenges up by the IMSI.
47
If the VLR does not have any more authentication challenges for the IMSI (as it
48
happens when the VLR sees the IMSI for the first time), the VLR requests new
49
authentication challenges from the HLR. Then the HLR verifies that the IMSI is
50
known and, if it is unknown, sends back an error that will terminate the
51
Location Updating procedure.
52

    
53
After the VLR found the authentication challenge, it authenticates the SIM, and
54
performs a Classmark Enquiry and Physical Channel Reconfiguration. Then the VLR
55
has the required information to finish the Location Updating, and continues
56
with Process Update_Location_HLR (3GPP TS 29.002). Afterwards, the VLR assigns
57
a new TMSI with the Location Updating Accept, which is acknowledged by the TMSI
58
Reallocation Complete. In following Location Updates with the same MSC, the ME
59
sends the TMSI instead of the IMSI in the Location Updating Request.
60

    
61
[[figure-imsi-regular]]
62
.Location Updating in 2G CS with IMSI
63
["mscgen"]
64
----
65
msc {
66
  hscale="1.75";
67
  ME [label="ME"], BTS [label="BTS"], BSC [label="BSC"], MSC [label="MSC/VLR"],
68
  HLR [label="HLR"];
69

    
70
  // BTS <=> BSC: RSL
71
  // BSC <=> MSC: BSSAP, RNSAP
72
  // MSC <=> HLR: MAP (process Update_Location_HLR, 3GPP TS 29.002)
73

    
74
  ME   => BTS [label="Location Updating Request"];
75
  BTS  => BSC [label="Location Updating Request"];
76
  BSC  => MSC [label="Location Updating Request"];
77

    
78
  --- [label="VLR requests new authentication challenges for this IMSI if necessary"];
79
  MSC  => HLR [label="Send Auth Info Request"];
80
  MSC <=  HLR [label="Send Auth Info Result"];
81
  ---;
82

    
83
  BSC <=  MSC [label="Authentication Request"];
84
  BTS <=  BSC [label="Authentication Request"];
85
  ME  <=  BTS [label="Authentication Request"];
86
  ME   => BTS [label="Authentication Response"];
87
  BTS  => BSC [label="Authentication Response"];
88
  BSC  => MSC [label="Authentication Response"];
89
  BSC <=  MSC [label="Classmark Enquiry"];
90
  BTS <=  BSC [label="Classmark Enquiry"];
91
  ME  <=  BTS [label="Classmark Enquiry"];
92
  ME   => BTS [label="Classmark Change"];
93
  BTS  => BSC [label="Classmark Change"];
94
  BSC  => MSC [label="Classmark Update"];
95
  BSC <=  MSC [label="Physical Channel Reconfiguration"];
96
  BTS <=  BSC [label="Ciphering Mode Command"];
97
  ME  <=  BTS [label="Ciphering Mode Command"];
98
  ME   => BTS [label="Ciphering Mode Complete"];
99
  BTS  => BSC [label="Ciphering Mode Complete"];
100
  BSC  => MSC [label="Ciphering Mode Complete"];
101

    
102
  --- [label="Process Update_Location_HLR (3GPP TS 29.002)"];
103
  MSC  => HLR [label="Update Location Request"];
104
  MSC <=  HLR [label="Insert Subscriber Data Request"];
105
  MSC  => HLR [label="Insert Subscriber Data Result"];
106
  MSC <=  HLR [label="Update Location Result"];
107
  ---;
108

    
109
  BSC <=  MSC [label="Location Updating Accept"];
110
  BTS <=  BSC [label="Location Updating Accept"];
111
  ME  <=  BTS [label="Location Updating Accept"];
112
  ME   => BTS [label="TMSI Reallocation Complete"];
113
  BTS  => BSC [label="TMSI Reallocation Complete"];
114
  BSC  => MSC [label="TMSI Reallocation Complete"];
115
}
116
----
117

    
118
<<<
119
== Required Changes
120

    
121
=== Pseudonymous IMSI Storage in the HLR
122

    
123
The HLR must store up to two pseudonymous IMSIs (imsi_pseudo) and their related
124
counters (imsi_pseudo_i) per subscriber. Each subscriber initially has one
125
pseudonymous IMSI allocated. A subscriber has two valid pseudonymous IMSIs
126
only during the transition phase from the old pseudonymous IMSI to the new one.
127
The amount of available IMSIs must be higher than the amount of subscribers
128
registered with the HLR. If the amount of available IMSIs is too short, the HLR
129
can delay assigning new pseudonymous IMSIs until new IMSIs are available again.
130

    
131
.Examples for additional subscriber data in HLR
132
|===
133
| Subscriber ID | imsi_pseudo | imsi_pseudo_i
134
// example IMSIs taken from Wikipedia
135
| 123
136
| 310150123456789
137
| 1
138

    
139
| 234
140
| 502130123456789
141
| 1
142

    
143
| 234
144
| 460001357924680
145
| 2
146
|===
147

    
148
==== imsi_pseudo
149

    
150
The value for imsi_pseudo is a random choice from the pool of available IMSIs
151
that the HLR controls. The pseudonymous IMSI must not be used by any subscriber
152
as pseudonymous IMSI yet, but may be the real IMSI of a subscriber.
153

    
154
[[hlr-imsi-pseudo-i]]
155
==== imsi_pseudo_i
156

    
157
The counter imsi_pseudo_i indicates how often a subscriber's pseudonymous IMSI
158
was changed. The value is 1 for the first allocated pseudonymous IMSI of a
159
subscriber. When allocating a new pseudonymous IMSI for the same subscriber,
160
the new imsi_pseudo_i value is increased by 1. The counter is used by the SIM
161
applet to detect and ignore outdated requests related to changing the
162
pseudonymous IMSI.
163

    
164
=== SIM Provisioning
165

    
166
The HLR is allocating a pseudonymous IMSI for the subscriber. This pseudonymous
167
IMSI is stored as IMSI on the subscriber's SIM instead of the real IMSI.
168

    
169
==== SIM applet
170

    
171
The SIM is provisioned with a SIM applet, which is able to change the IMSI once
172
the next pseudonymous IMSI arrives from the HLR. A reference implementation is
173
provided in <<reference-src>>.
174

    
175
The SIM applet registers to a suitable SMS trigger (3GPP TS 03.19, Section
176
6.2). When an SMS from the HLR in the format of <<sms-format>> arrives, the
177
applet must verify that the SMS is not outdated by comparing imsi_pseudo_i from
178
the SMS with the last imsi_pseudo_i that was used when changing the IMSI
179
(initially 1 as in <<hlr-imsi-pseudo-i>>). The new value must be higher,
180
otherwise the SMS should not be processed further.
181

    
182
The SIM applet registers a timer with min_sleep_time from the SMS. When the
183
timer triggers, the IMSI of the SIM is overwritten with the new pseudonymous
184
IMSI, the TMSI and GSM Ciphering key Kc (3GPP TS 31.102, Section 4.4.3.1) are
185
invalidated. The current imsi_pseudo_i value is stored to compare it with the
186
next SMS. Afterwards, the EF~IMSI~ changing procedure in 3GPP TS 11.14, Section
187
6.4.7.1 is executed to apply the new IMSI.
188

    
189
// FIXME: do we need to enforce the LU now, with an arbitrary CM Service
190
// Request, or would this only be necessary for Osmocom? (OS#4404)
191

    
192
=== Process Update_Location_HLR
193

    
194
All IMSI Pseudonymization related changes to Process Update_Location_HLR
195
(3GPP TS 29.002) are optional.
196

    
197
* HLR looks up subscriber by pseudonymous imsi in Update Location Request
198
* if two pseudo imsi found, and connected with new one: dealloc old entry
199
* if two pseudo imsi found and connected with old one: do not dealloc!
200

    
201
* after update location result: set new timer for sending next IMSI to random delay
202

    
203
==== Send Next Pseudonymous IMSI
204

    
205
* if subscriber has two pseudo IMSI, send the new one
206
* if subscriber has only one pseudo IMSI:
207
  * abort if not enough IMSIs available
208
  * generate new pseudo IMSI as described earlier
209
  * set imsi_pseudo_i like last one + 1
210
* send SMS to subscriber's SIM
211

    
212
[[sms-format]]
213
==== SMS Format
214

    
215
* min_sleep_time
216
* imsi_pseudo
217
* imsi_pseudo_i
218

    
219
[[figure-]]
220
.Process Update_Location_HLR with IMSI pseudonymization changes
221
["mscgen"]
222
----
223
msc {
224
  hscale="1.75";
225
  MSC [label="MSC/VLR"], SMSC [label="SMS-SC"], HLR [label="HLR"];
226

    
227
  MSC   => HLR  [label="Update Location Request"];
228
  HLR box HLR [label="\nDeallocate old Pseudonymous IMSI,\n if new Pseudonymous IMSI was used\n"];
229
  MSC  <=  HLR  [label="Insert Subscriber Data Request"];
230
  MSC   => HLR  [label="Insert Subscriber Data Result"];
231
  HLR box HLR [label="Start Next_Pseudo_IMSI_Timer"];
232
  MSC  <=  HLR  [label="Update Location Result"];
233

    
234
  MSC box MSC [label="Finish Location Updating with ME"],
235
  HLR box HLR [label="Wait for Next_Pseudo_IMSI_Timer expiry"];
236
  |||;
237
  ...;
238
  |||;
239
  HLR box HLR [label="Next_Pseudo_IMSI_Timer expired"];
240
  HLR box HLR [label="\nAllocate new Pseudonymous IMSI\nif subscriber only has one allocated\n"];
241
  SMSC <=  HLR  [label="Next Pseudonymous IMSI SMS"];
242
  SMSC box SMSC [label="Deliver SMS to ME"];
243
}
244
----
245

    
246
== Error Scenarios
247
=== Next Pseudonymous IMSI SMS is Lost
248
=== SMS Arrives Late
249

    
250
// === SMS Arrives Before Timer Expires
251
// FIXME: OS#4486
252

    
253
[[reference-src]]
254
== Reference Implementation with Source Code
255

    
256
== Recommendations for Real-World Implementations
257
=== ATT = 0
258
=== End to End Encryption of SMS
259
=== Warning the User if the IMSI Does Not Change
260
=== User-configurable Minimum Duration Between IMSI Changes
261

    
262
<<<
263
include::./common/chapters/gfdl.adoc[]
(3-3/5)
Add picture from clipboard (Maximum size: 48.8 MB)