======제조사 부여 식별자====== =====ESN (Electronic Serial Number)===== 단말제조업체가 단말기에 부여하는 고유번호. 단말기를 켜거나 전화를 걸때 기지국을 통해서 사업자에게 전달되며, 사업자는 이를 사용하여 사용자 식별, 통화, 인증 및 과금 등에 사용한다. 국제 로밍을 고려할 경우 세계적으로 고유한 번호이어야 하므로 미국의 TIA(Telecommunication Industry Association)에 그 관리와 배포를 위임하고 있다. 총 32bit으로 구성되며 MC(manufacturer code)가 8bit인 것과 14bit인 경우의 두 가지가 있다. TIA가 보유하는 ESN 자원이 고갈되어감에 따라 MEID(Mobile Equipment Identifier)로 전환되었다. ESN 구성 =====MEID(Mobile Equipment Identifier)===== CDMA의 ESN 고갈에 대한 대안으로 만들어짐 아래와 같이 56bit로 구성됨 (Hexadecimal이므로 4 * 14 = 56bit, 마지막 CD는 check sum으로 식별자 아님) 맨 앞의 RR은 Regional code로 GHA(Global Hexadecimal MEID Administrator)에 의해 관리되는데 00-99는 3GPP에서 사용되는 IMEI(International Mobile Equipment Identity)를 위해 예약, A0-FF는 cdma2000을 위해 reserve 됨 MEID 구성 =====IMEI (International Mobile Equipment Identity)===== 3GPP(GSM/WCDMA)에서 사용하는 코드14자 + 체크용 1자 = 총 15자의 Hex값 MEID와 동일 포맷이지만, CD(check sum)이 포함되며 RR코드의 영역이 다름 ======통신사 관련 식별자====== =====IMSI (International Mobile Station Identity), 국제 이동국 식별 번호===== GSM 서비스 가입 시에 이동 단말기에 할당되는 고유 15자리 식별 번호. 이 번호는 이동 국가 코드, 이동 네트워크 코드, 이동 가입자 식별 번호 및 국가 이동 가입자 식별 번호로 구성된다. IMSI는 다음과 같은 구조를 지닌다. IMSI = MCC (Mobile Conuntry Code) + MNC (Mobile Network Code) + MSIN (Mobile Subscriber Identifier Number) {{wiki:2inchlte:info:imsi_format.jpg}}\\ {{wiki:2inchlte:info:korea_mcc_mnc.jpg}} MCC+MNC는 이동전화 가입자의 Home Network를 전세계 어떠한 망에서든지 유일하게 식별한다. 다시말해, IMSI는 Visited Network(로밍 서비스를 제공하는 타 Network)가 최대 처음 6자리를 분석해서 Home Network를 조회할 수 있는 구조로 되어 있다. MSIN은 MCC와 MNC가 주어진 경우, 이동전화 단말기를 유일하게 식별한다. =====TMSI (Temporary Mobile Subscriber Identity), 임시 이동 가입자 식별 번호===== 이동 통신 시스템에서 이동국을 식별하는 임시 식별 번호. 임시 식별 번호는 홈 위치 레지스터(HLR)의 인증 센터(AC/Auc)에 의해 부여되며, 이동국과 이동 전화 교환국(MSC) 사이에서 보안상 국제 이동국 식별 번호(IMSI: International Mobile Station Identity) 대신 사용된다. 이는 Air 인터페이스 상에 IMSI 노출을 최소화하기 위하여 최초 위치 등록시 IMSI 대신에 TMSI를 가입자별로 핟당한다. 가입자 식별을 보호하기 위해 인증과 암호화를 거쳐 이동국에 전송되며, 이동국 통신권 내에서 유효하고 통신권 외에서는 추가적으로 위치 영역 식별(LAI: Location Area Identification)이 필요하다. =====MIN (Mobile Identification Number), 이동국 식별 번호===== 이동국(이동 전화 단말기)에 할당된 10자리 전화번호를 디지털로 표시하는 34비트의 숫자. 단말기의 지정 번호(일명 전화번호)로서 MIN 1과 MIN 2가 있다. MIN 1은 단말기에 할당된 7개 디짓의 전화번호로 24개 비트로 구성되며, MIN 2는 3개 디짓의 지역 번호로 10개의 비트로 구성된다. 011-YYY-XXXX에서 MIN 1은 YYY-XXXX이고 MIN 2는 011이다. [참고] MIN은 원래 북미의 이동전화 단말기를 식별하기 위한 것이었다. 10자리의 MIN은 국제 로밍을 제공하기 위해 필요한 추가정보를 포함할 수 없다는 점 때문에 IMSI 체계가 필요하게 되었다. IMSI 는 GSM 표준에서 사용된다. (ITU-T) =====MSISDN (Mobile Station International ISDN Number), 이동국 국제 ISDN 번호===== WCDMA IMT-2000에서는 가입자에게 두 가지 번호를 부여한다. USIM 카드에 IMSI와 단말기에 MSISDN이라는 것이 부여되는데, 이번에 정부에서 010X로 부여한 것이 바로 MSISDN이고 이 MSISDN에는 실제로는 국가코드(우리나라 = 82)가 들어가 있는 상태이다. 따라서 가입자는 상대방이 어디에 있는지 전혀 예상하지 않고서도 별도의 다이얼링 없이 전화를 걸어 상대방이 다른 국가에 있다는 것을 알 수 있다. 하나의 IMSI에 4개의 MSISDN을 가질 수 있다. GSM 네트웍에서의 전화번호란 MSISDN(Mobile Station Integrated System Digital Network)을 뜻하며 국가코드(Country Code), 네트웍코드(NetworkCode) 그리고 디렉토리번호(Directory Number)로 구성되어 있다. 반면에 IS-41C 네트웍에서의 전화번호란 휴대폰의 MIN(Mobile Identification Number)를 뜻하며 지역번호(Area Code)와 전화번호(Phone Number)로 구성되어 있고 (NPA) Nxx-xxxx 형태를 갖고 있다. MDN (Mobile Directory Number)와 동일한 것으로, 가입자 전화번호를 의미한다. =====IMEI (International Mobile Equipment Identity), 국제 이동 단말기 식별 번호===== GSM 표준에서 제조업체에 의해서 단말의 하드웨어 제작시 할당되는 최대 15자리 하드웨어 번호를 말하며, 이 번호는 형식 승인 코드, 최종 조합 코드 및 일련 번호를 포함하여 15자리로 구성된다. 이를 통해 GSM 이동 단말기가 서로를 고유하게 식별할 수 있다. -- while list : 정상적인 사용이 가능한 단말들의 분류 -- black list : 호를 금지시켜야 하는 단말들의 분류 -- gray list : 호를 금지하지는 않지만, 추적이 필요한 단말들의 분류 ====== ? ====== =====PIN (Personal Identification Number), 개인 식별 번호===== 특정 기능이나 정보의 접근을 위해 모든 GSM 기반 전화기에서 사용되는 코드로, PIN은 가입과 동시에 제공한다. ====== ? ====== =====디바이스 식별자가 인증(Authentication)에 문제가 되는 경우들===== 요즘 휴대폰 외에도 타블렛과 같은 모바일 디바이스를 함께 사용하는 사람들이 많아졌다. 이런 사용자들의 패턴을 봤을 때 위에서 설명한 식별자들을 인증을 위한 ID로 사용하면 다음과 같은 문제가 발생할 수 있다. ====제조사가 생성한 식별자를 사용하는 경우==== 전화기가 아닌 단말은 ESN, IMEI, MEID 등을 가지고 있지 않다. Wifi의 MAC address는 wifi가 꺼져있을 경우 올바른 주소값을 얻을 수 없는 기기가 있다. 디바이스에 영구적으로 할당된 유일한 식별자이므로 완전히 공장 초기화가 되더라도 값이 바뀌지 않는다. 즉, 사용자 간의 기기 양도 및 거래가 될 경우 인증을 위한 ID로 서버에 보관하고 있을 경우 문제가 된다. ====이동통신망 관련 식별자를 사용하는 경우==== 타블렛 PC 등 전화기가 아닌 모바일 디바이스들을 식별할 수 없다 ====iOS에서 UDID(Unique Device ID)를 사용하는 경우==== iOS에는 UDID라는 단말기 식별자(40자리)가 존재하는데, 개인정보 논란을 비롯해서 다른 광고플랫폼에서 트래픽 분석에 사용되는 등 문제가 됨에 따라 애플은 iOS5 부터 UDID를 deprecated 시켰다. 게다가 2013.06 부터 UDID를 사용하는 앱은 심사에서 reject되고 있다. 또한 UDID 역시 제조사(애플)의 단말기 식별자이므로 인증을 위한 사용자 식별자로는 부적절하다. ====Android에서 Settings.Secure.ANDROID_ID를 사용하는 경우==== ANDROID_ID는 64bit 크기의 고유값인데, 디바이스 초기화할 때 리셋되므로 일반적인 제조사 식별자가 가지는 문제(e.g. 기기 양도)는 없다. 하지만 안드로이드2.2(프로요) 이전의 단말의 경우 값을 신뢰할 수 없고, 메이저 제조사에서 제작한 인기 모델의 모든 단말이 같은 ANDROID_ID 값을 가지는 버그가 있어서 사용에 위험이 따른다. =====그럼 디바이스 인증에는 어떤 식별자를 사용해야 하는가?===== 모바일앱의 디바이스 인증에 사용할 ID값은 일반적으로 다음과 조건을 만족시켜야 한다. 1. Global Uniqueness를 보장할 수 있는 값이어야 한다. 2. 개인정보로 취급되지 않는 식별자를 사용해야 한다. (MAC address의 경우 관점에 따라 개인정보로 취급되는 경우가 있다 ) 3. 제조사의 Serial Number와 같이 영속적인 값은 피해야 한다. (사용자간의 기기 양도시의 문제) 4. 기기정보 기반의 값(e.g.통신사의 식별자)은 지원할 수 있는 기기의 제한을 만들 수 있으므로 피한다. 디바이스 인증을 위한 식별자로써 UUID(GUID)를 사용하는 것이다. 즉, 앱 설치 후 최초 실행시에 UUID(Unique Device ID)를 생성해서 저장하고 그 값을 디바이스 식별자로 사용한다. 애플 역시 iOS5에서 UDID(Unique Device ID)를 depricate 시키면서 UUID(Universally Unique Identifier)을 사용을 권고했고, Android의 커뮤니티 역시 UUID를 사용하는 것을 일반적으로 권장한다. 인증을 위한 디바이스 식별자에 UUID를 사용하면 개인정보와 관련된 이슈를 피할 수 있을 뿐아니라, 다양한 시나리오를 개발자가 직접 컨트롤 할 수 있다.