Вопрос
“Что такое IMSI, и чем он отличается от серийного номера SIM-ки?”
Ответ
Многие знают, что на SIM-карте хранится некий идентификатор абонента, называемый IMSI. И что у каждого абонента IMSI свой, уникальный. В то же время, если вытащить SIM-карту из телефона, то на ней можно увидеть другой номер, лишь частично совпадающий с IMSI. Что это за номера, чем они отличаются, и почему в них есть общие подстроки цифр?
Начнём с кусочка пластика со встроенным микропроцессором под названием “SIM-карта”. Она является частным представителем более обширного класса микропроцессорных устройств, называемых “смарт-карты”. В соответствии с международным стандартом ISO/IEC 7812 каждой такой карте присваивается уникальный номер, называемый Integrated Circuit Card ID (ICCID):
Как видно, этот номер, состоящий из 19 цифр (хотя встречаются и очень старые карты с 20-разрядными ICC ID), в свою очередь может быть разбит на отдельные компоненты. Первые две цифры - код индустрии, который для телекома всегда равен 89. Дальше идет код страны длиной от одного до трех знаков, и код организации, выпустившей карту. Этот префикс длиной в 7 цифр называется Issuer Identification Number (IIN). В приведенном примере код страны - 380 (Украина), код выпустившей организации - 01 (ЗАО “УМС”).
Остаток ICCID составляет индивидуальный номер карты (уникальный в рамках данного IIN), за которым следует одна цифра, используемая для контроля правильности IIN по простому алгоритму. Индивидуальный номер карты может назначаться выпускающей организацией по собственному усмотрению.
Теперь перейдем к IMSI.
Каждая карта содержит набор данных, имеющих отношение к определённому обслуживаемому “мобильному устройству” (mobile station, MS. Под этим словосочетанием, упрощённо говоря, понимают набор “человек+мобилка+SIM-ка”). У этого набора данных (и, следовательно, у мобильного устройства) есть свой уникальный ID. Он и называется IMSI - International Mobile Station Identity.
Обычно SIM-карта содержит данные об одной MS. Но в принципе (например, в случае программируемых SIM-карт) никто не мешает размещать на одной SIM-карте сразу несколько наборов данных, идентифицируемых несколькими разными IMSI.
Что же такое IMSI?
Это 15-значное число, которое (surprise!) можно разделить на отдельные компоненты. Первый - это код страны в рамках инфраструктуры GSM, называемый Mobile Country Code (MCC). Второй - это код мобильной сети в рамках страны, Mobile Network Code (MNC). Дальше идут 10 знаков, которые, собственно, и являются идентификатором MS (абонента) в рамках сети. В приведеном примере MCC = 255 (Украина), MNC = 01 (ЗАО “УМС”).
К чему это приводит на практике?
Во-первых, если у оператора дела идут хорошо, и он наподключал больше 1010-1 абонентов, ему надо получать новый MNC в стандартизирующих органах ;)
Во-вторых, чтобы все работало и телефоны звонили, оператору необходимо в рамках своей сети всегда иметь возможность определить, в каком HLR-е содержатся сведения об абонентах. Тут сама собой напрашивается очевидная оптимизация - трактовать несколько первых цифр идентификатора MS как указание на то, в каком HLR-е содержаться сведения об этом абоненте. При этом маршрутизация запросов к HLR-ам описывается простыми правилами вида: “все запросы о абонентах 2550198* направлять в HLR #98”.
Теперь представим себе весь процесс выпуска новых карт и привлечения новых абонентов. Оператор решил выпустить новые карты. Он отправляет заказ производителям SIM-карт. Производители присылают контейнеры с физическими SIM-картами (куда уже прописаны IMSI) и стопицот раз зашифрованные секретные данные о них (пресловутые Ki-коды и тому-подобное). Секретные данные загружаются в секретные информационные системы оператора, а SIM-карты направляются в магазины, дилерам и т.п.
Понятное дело, что в тот момент, когда свежеподключившийся абонент вставит SIM-карту в телефон, она уже должна быть правильным образом “прописана” в HLR-е (иначе абонент не сможет зарегистрироваться в сети). Получается, что данные о всех новых SIM-картах надо сразу размещать в HLR-ах. А если SIM-карты не продадутся в течении длительного времени? Тогда данные о них будут занимать ценное место в базе HLR. Можно выбрасывать карты в продажу порциями, или вообще при фактической продаже SIM-карты абоненту нажимать кнопочку в каком-то интерфейсе, и on demand загружать в HLR данные о картах поштучно.
Для того, чтобы заниматься подобными оптимизациями, полезно знать, какому ICCID (который можно прочесть на коробке с SIM-кой) соответствует какое IMSI. Понятное дело, что для информационных систем это дело не хитрое - заводится табличка (ICCID, IMSI), и дело с концом. А вот для людей проще, чтобы ICCID и IMSI были похожими. Именно поэтому обычно при заказе SIM-карт оператор просит, чтобы у них совпадали, к примеру, последние 10 цифр IMSI и Individual ID в ICCID.