引言
相信大家都很熟悉IMEI,一般都是通过手机拨号盘输入*#06#后弹出的手机设备唯一标识码,但是IMEI真的只是用于标识设备这么简单吗?本文主要是深入探讨手机IMEI的基本概念以及用途,让读者深入了解IMEI这串神奇的数字
IMEI的基本概念
IMEI(全称:International Mobile Equipment Identity国际移动设备识别码,即通常所说的手机序列号、手机“串号”,用于在移动电话网络中识别每一部独立的手机等移动通信设备,相当于移动电话的身份证。
手机IMEI通常由15位数字组成。
第一部分 TAC,Type Allocation Code,类型分配码,由8位数字组成(早期是6位),是区分手机品牌和型号的编码,该代码由GSMA及其授权机构分配。其中TAC码前两位又是分配机构标识(Reporting Body Identifier),是授权IMEI码分配机构的代码,如01为美国CTIA,35为英国BABT,86为中国TAF。
第二部分 FAC,Final Assembly Code,最终装配的代码,由2位数字构成,仅在早期TAC码为6位的手机中存在,所以TAC和FAC码合计一共8位数字。FAC码用于生产商内部区分生产地代码。
第三部分 SNR,Serial Number,序列号,由第9位开始的6位数字组成,区分每部手机的生产序列号。
第四部分 CD,Check Digit,验证码,由前14位数字通过Luhn算法计算得出。
IMEI和IMEISV区别
很多人通常在观察网络运营商的后台统计数据时,会出现有15位的IMEI和16位的IMEI上报,因此感到困惑。到底IMEI是15位还是16位呢?其实IMEI统一是15位,并不在16位的IMEI,运营商后台看到的16位数,其实是不带校验位,而是TAC型号分配码+SNR串号+SVN软件版本号的IMEISV。对比图1和图2,IMEISV与IMEI主要区别在于一SVN软件版本号,主要用于区分同型号手机出厂时使用的不同软件版本
图1: IMEI结构图
图2:IMEISV结构图
IMEI上报方式和意义
一般在手机设备发起注册的过程中,UE会将IMEI上报给网络,例如5G网络,在初始注册流程中UE将IMEI or IMEISV or GUTI信息携带在IDENTITY RESPONSE消息中,那什么情况下会携带IMEI信息呢?当网络侧没有终端的IMEI信息时,网络侧会在IDENTITY REQUEST消息中包含Identity type信元且类型为”IMEI”, UE收到之后就会将IMEI信息携带在IDENTITY RESPONSE消息中上报给网络。
图3:id response消息
图4:identity type具体内容
那么为何通常在初始注册的适合上报IMEI信息呢?因为IMEI信息非常重要,网络需要在校验终端设备IMEI是否合法,如果不合法则会下发注册被拒消息 REGISTRATION REJECT并携带5GMM_Cause为#3 or #6,终端收到后会将USIM卡置于失效状态
#3 (Illegal UE); or
#6 (Illegal ME).
The UE shall set the 5GS update status to 5U3 ROAMING NOT ALLOWED (and shall store it according to subclause 5.1.3.2.2) and shall delete any 5G-GUTI, last visited registered TAI, TAI list and ngKSI.
In case of PLMN, the UE shall consider the USIM as invalid for 5GS services until switching off or the UICC containing the USIM is removed;
DC校验位计算以及最后一位在空口中的传输方式
在实际看空口信令的过程中会发现一个现象,终端的IMEI和空口传输的IMEI在最后一位时存在差异性的,在空口信令传输中最后一位值是0,笔者接下来解释为何空口信令传输的最后一位IMEI为0(如下图所示。
图5:空口信令中IMEI具体信息
首先介绍一下IMEI最后一位DC的计算原理:这里不得不提到上世纪60年代,由IBM科学家Luhn发明的一种算法叫Luhn算法,也叫10算法,此算法被广泛应用在信用卡卡号构成、IMEI、某些国家身份证号和社保号构成,算法的原意是防止人工书写一连串数字引入人工错误,通过一串数计算后结果能够模10为0,表示数据有效,非0表示数字无效。
DC计算的步骤主要分为三步:(1)除去第15位CD后的14位IMEI,从右往左标识位D1,D2,D3,...,D14,在奇数位乘以2处理;(2)如果奇数位乘以2的结果超过10,需要减去9处理,如18,减去9之后为9,然后D14位到D1位叠加;(3)如果第二步叠加后的数据可以模10为0,则CD位为0,否则为比该数字大的可模10为0的数字减去该数的值,例如,如果叠加的数据为53,大于53模10为0的数字是60,那么60-53=7,则7为DC位。
图6:DC计算过程
最后一个问题:IMEI最后一位CD需不需要在OTA中传输呢?
协议23003中明确指出当IMEI在空口传输时,CD位不会被传输,会传递0代替,这就很好地解释了为何我们从OTA日志中看到的IMEI在空口传输时最后一位值为0的原因
The IMEI (14 digits) is complemented by a Check Digit (CD). The Check Digit is not part of the digits transmitted when the IMEI is checked, as described below. The Check Digit is inted to avoid manual transmission errors, e.g. when customers register stolen MEs at the operator's customer care desk. The Check Digit is defined according to the Luhn formula, as defined in annex B. Ensure that the last digit of the IMEI is set to zero.