Индикация шифрования на мобильных телефонах

Я пока ещё ни разу не видел, чтобы телефон показывал отсутствие шифрования в сети. Даже при тестировании OpenBTS, которая шифрование пока не поддерживает. Собственно, до недавнего времени я даже не знал, что по спецификации телефонам рекомендуется это делать. Узнал об этом я на 26C3 из нашумевшего доклада Карстена Нола (Kartsen Nohl) и Криса Пэйджа (Chris Paget) и последующих за этим обсуждениях. Говорят, что некоторые телефоны вообще не умеют показывать значок отсутствия шифрования, а остальные не показывают, потому что эта возможность блокируется подавляющим большинством операторов при помощи установки специального бита на SIM-карте. Вот как это описано в спецификации GSM 02.07 Normative Annex B.1.26:

Ciphering Indicator
The ciphering indicator feature allows the ME to detect that ciphering is not switched on and to indicate this to the user,
as defined in GSM 02.09.
The ciphering indicator feature may be disabled by the home network operator setting data in the «administrative data»
field (EFAD) in the SIM, as defined in GSM 11.11.
If this feature is not disabled by the SIM, then whenever a connection is in place, which is, or becomes unenciphered, an
indication shall be given to the user.
Ciphering itself is unaffected by this feature, and the user can choose how to proceed.

Ciphering Indicator

The ciphering indicator feature allows the ME to detect that ciphering is not switched on and to indicate this to the user, as defined in GSM 02.09.

The ciphering indicator feature may be disabled by the home network operator setting data in the «administrative data» field (EFAD) in the SIM, as defined in GSM 11.11.

If this feature is not disabled by the SIM, then whenever a connection is in place, which is, or becomes unenciphered, an indication shall be given to the user.

Ciphering itself is unaffected by this feature, and the user can choose how to proceed.

В моём вольном переводе:

Индикатор шифрования

Индикатор шифрования позволяет ME (Mobile Equipment, мобильное оборудование, т.е. мобильный телефон) определять, что шифрование не включено и сообщать об этом пользователю, как определяется в спецификации GSM 02.09.

Инликатор шифрования может быть заблокирован домашним оператором связи (т.е. оператором, который выпускает SIM-карту) установкой значения поля «административные данные» (EFAD) на SIM-карте, как определяется спецификацией GSM 11.11.

Если индикатор не заблокирован SIM-картой, то соединение, которое уже или только будет не зашифровано, должно сопровождаться индикатором отсутствия шифрования.

Само шифрование не затрагивается этой

Индикатор не влияет на шифрование само по себе, и пользователь сам решает, как ему действовать.

Так же эта «фича» упоминается в GSM 02.09 Section 3.3.3:

Functional requirements

...

The ME has to check if the user data confidentiality is switched on using one of the seven algorithms as defined in GSM 02.07.  In the event that the ME detects that this is not the case, or ceases to be the case (e.g. during handover), then an indication is given to the user.

This ciphering indicator feature may be disabled by the SIM (see GSM 11.11).

In case the SIM does not support the feature that disables the ciphering indicator, then the ciphering indicator feature in the ME shall be enabled by default.

The nature of the indicator and the trigger points for its activation are for the ME manufacturer to decide.

During the establishment of a call the trigger point shall be at call initiation at the latest. In the case of handover the trigger point shall be the completion of handover at the latest.

The manufacturer may provide the means to enable the user to temporarily disable the feature. This should be done in such a way that the user can protect it from misuse.

В моём вольном переводе:

Функциональные требования

...

ME должен проверять, включена ли защита конфиденциальности пользователя одним из семи алгоритмов, определённых в спецификации GSM 02.07. В случае если это не так, или перестало быть так (например, в случае передачи соединения (handover'а)), пользователю показывается индикатор.

Возможность показа индикатора фишрования может быть запрещена SIM-картой (см. спецификацаию GSM 11.11).

В случае, если SIM-карта не поддерживает возможность запрета индикатора шифрования, возможность показа индикатора шифрования должна быть включена по умолчанию.

Сущность индикатора и точки его включения определяются производителем ME.

В ходе установки соединения, точка включения индикации должна быть не позднее инициализации звонка. В случае передачи содинения точка включения индикации должна быть  не позднее завершения передачи соединения.

Производитель может дать опльзователю возможность временно отключить эту возможность Это должно быть таким образом, чтобы пользователь мог защитить её от неправильного (не авторизованного?) использования.

Ну и в спецификации GSM 11.11 Section 10.3.18 описан собственно формат хранения этого флага на SIM-карте. Он называется OFM и хранится в младшем бите третьего байта поля EFAD (Administrative data). В спецификациях на GSM его значение почему-то не рашифровывается, а в более позних спецификациях, например в 3GPP TS  31.103 Section 4.2.5 его значение чётко прописано:

The OFM bit is used to control the Ciphering Indicator as specified in TS 22.101 [21].

Т.е.

Бит OFM используется для контроля Индикатора Шифрования, как описано в спецификации TS 22.101.

Значит, имея адаптера для чтения SIM-карт или смарт-карт должно быть можно проверить наличие этого бита, а при наличии программируемой SIM-карты — снять его, и проверить, будет ли телефон показывать отсутствие шифрования при подключении к OpenBTS. Что я и собираюсь сделать в скором времени.

Если у вас есть SIM-адаптер, попробуйте прочитать этот бит на вашей SIM-карте. Давайте посмотрим, все ли операторы скрывают индикатор шифрования?

PS Спасибо Sylvain Munaut за то, что дал чёткие ссылки на места в стандарте, где эта «фича» описана.