2010年9月6日月曜日

iOS デバイスでの番号・番号・番号( UDID、ICCID、IMEI、... )

ケータイでいう端末識別番号に近いものが iPhone にないか調べてみた。その簡単なまとめ。

[2010-09-17追記]
・ECID
・参照情報



[2011-11-11追記]
・IMEIの取得方法


番号一覧


名称 説明 格納先
UDID デバイス識別子
(Unique Device IDentifier)
デバイス ffc1ded6f4570d557ad65f986684fc10c7f8d51f
シリアル番号シリアル番号 デバイス 12345ABCDEF
Wi-Fiアドレス無線LANデバイスのMACアドレス デバイス 00:12:08:23:7D:A2
ICCID 携帯電話に付与される番号 SIMカード 1234 5678 1234 5678 123
IMEI 携帯電話に付与される番号 デバイス 12 123456 123456 0
IMSI 携帯電話ユーザーに付与される番号 SIMカード 12 123456 123456 0
ECID デバイス識別に使われる16桁数値(16進)
Exclusive Chip Identification
デバイス 9999902578999
3G 接続できない iPod/IPad Wifi には当然ながら ICCID, IMEI, IMSI は存在しない。

ICCID

Subscriber Identity Module - Wikipedia, the free encyclopedia より引用
Each SIM is internationally identified by its ICC-ID. ICC-IDs are stored in the SIM cards and are also engraved or printed on the SIM card body during a process called personalization. The ICC-ID is defined by the ITU-T recommendation E.118.[9] According to E.118 the number is up to 19 digits long including a single check digit calculated using the Luhn algorithm. However, the GSM Phase 1[10] defined the ICC-ID length as 10 octets with operator-specific structure.

IMEI

International Mobile Equipment Identity - Wikipedia より引用
International Mobile Equipment Identity (IMEI) は、GSM/W-CDMA/iDENの全ての携帯電話や一部の衛星電話に付与される識別番号。携帯電話のバッテリを外すと、そこに書いてあることが多い。また、*#06# と入力すれば携帯電話の画面にも表示できる。
GSMのネットワークでは、正当なデバイスかどうかを識別するのに使われており、盗まれた携帯電話を使えないようにすることもできる。例えば携帯電話を盗まれた場合、携帯電話会社に電話してそのIMEIの電話でネットワークにアクセスできないようにしてもらうことができる。そうするとその電話はSIMカードを入れ替えても使えなくなる。

IMSI

International Mobile Subscriber Identity - Wikipedia より引用
International Mobile Subscriber Identity(IMSI、「イムズィ」と発音)は、GSMおよびW-CDMAの全ての携帯電話ユーザーに割り当てられている一意な識別番号。携帯電話内のSIMカードに格納されており、その電話からネットワークに送信される。Home Location Register (HLR) やそのローカルなコピーである Visitor Location Register (VLR) から、その携帯電話に関する詳細を引き出すのにも使われる。
SIMカード - Wikipediaより引用
SIMカードには、IMSI(International Mobile Subscriber Identity)と呼ばれる固有の番号が付与されており、これと電話番号を結びつけることにより通信を可能とする。SIMカードを抜き差しすることで、電話番号を他の携帯電話機に移したり、ひとつの携帯電話端末で複数の電話番号を切替えて使用したりすることができる。

ECID

Exclusive Chip ID - Wikipedia, the free encyclopedia より抜粋
An Exclusive Chip ID, or ECID is a 16-digit Hexadecimal number used to uniquely identify Apple iOS devices[1].
The ECID of a device is used by Apple, in combination with a hashcode of the firmware as a challenge key in a challenge-response authentication protocol.

ECID - The iPhone Wiki より抜粋
With the iPhone 3GS onward, the ECID tag with your ECID is put in the signature checked section of every firmware file, and sent to Apple's servers for re-signing to get a valid SHSH.

「Jailbreakは合法」の決定、Appleは対抗するのか - ITmedia News
上記ソースによれば「基地局が端末を識別するのに使う番号」とのこと。

[関連]SIMカード

SIMカード - Wikipediaより引用
SIMカード(シムカード、Subscriber Identity Module Card)とは、GSMやW-CDMAなどの方式の携帯電話で使われている電話番号を特定するための固有のID番号が記録されたICカード。

関係など

ICCIDの取得方法について - 日本Androidの会 | Google グループ より引用
ICCIDやIMSIではSIMの識別ができ,IMEIを使用すると端末の識別ができます。
CCIDはICに紐づく番号ですので、SIMの紛失・破損等があった場合はICCIDは
変わってしまいます。
IMSIに関しましては契約者に紐づくため、電話番号とユニークになります。
しかし問題が一点あり、IMSIは再利用される可能性を含みます。
ICCIDは,皆様ご指摘のとおり,SIM固有の番号です。
IMSはI (International Mobile Subscriber
Identity)であり,ドコモなどの携帯事業者がSIMに割り当てた識別コードです。
したがってICCIDがIMSIを特定できれば,SIMを特定できます。
携帯電話の通信では,IMSIが電話番号の代わりをします。
SIMがないと,電話番号がなくなることになるため,通信できなくなります。

確認方法など

iPhoneの場合、設定 > 一般 > 情報で シリアル番号、IMEI、ICCID が確認できる。

同様に iTunesでもシリアル番号、IMEI、ICCIDが確認できる。シリアル番号をクリックすると UDID(識別子)も確認できる。

ECID は Xcodeのオーガナイザで見ることができる。

参考

iPhone:シリアル番号、IMEI、ICCID 番号を確認する方法
iPad:シリアル番号、UDID、IMEI、ICCID、およびセルラーデータ番号を確認する


プログラムでの取得方法


UDID

UIDevice 経由で取得できる。
[UIDevice currentDevice]. uniqueIdentifier 
[考察] UUIDを認証に使った場合、他者に漏れると簡単になりすましができてしまう。この為、認証に使ってはいけない。また生のまま暗号化されていないネットワークに流すことや、サーバ側で管理することも推奨されない(UUIDを元に個人が特定できる可能性が出てくるため、漏洩した場合まずいことになる)。ログを取る目的などで単にユーザを分別するのに利用したい場合は、適当な文字列(SALT)を加えてから MD5や SHAなどのハッシュ関数を通した値を使うと良い。SALTが漏れると意味が無いのでこれは秘密にしておく。なおSALTを単純にソースに埋め込んだ場合、実行バイナリを解析されるとすぐにバレてしまう可能性がある。簡易な方法としては、適当な文字列に加え、他の複数のデバイス固有情報(の一部)を SALTに加えると良いと思われる(シリアル番号やWiFiアドレス他)。(2010-09-17 追記)参考情報記載の Togetter の高木さんの発言によればユーザ識別用途なら乱数の使用が望ましいとのこと。端末固有の情報をいくら組み合わせても端末特定は可能なため。

シリアル番号

取得方法不明 ※情報求む

Wi-Fiアドレス

以下を参照 ※未確認
How can I programmatically get the MAC address of an iphone - Stack Overflow

ICCID

取得方法不明 ※情報求む

IMEI


2011-11-11 追記
エリカ女史が IMEIを取得するコードを公開していた。IOKit 利用。
UIDevice-IOKitExtensions.m at master from erica/uidevice-extension - GitHub

試したところ iPhone 4S (iOS 5.0.1)では取得できなかった。ネット上では iPhone OS 3.2.2 の時は取得成功、iOS 4.3から取得できなくなったとの情報あり。
iphone - Device IMEI using uidevice-extension - Stack Overflow
Device currentDevice] imei]

また IOKit 自体を iOS においては非パブリックとみなす人が多く、App Store審査で却下されるとの意見も多い。
iphone - Will use of IOKit in my iOS app get my app rejected? - Stack Overflow

エリカ女史自身もなんとなく歯切れの悪い説明。
iPhone Dev: IOKit - The Missing Public Framework - O'Reilly Broadcast

非パブリックの原因として上げられている理由:ドキュメントが無い、ヘッダファイルが無い
一方で PrivateFrameworks ディレクトリに含まれていないのでパブリックだという意見もある。

どちらにせよ iOS 4.3以降で IOKit 経由でIMEIを取得する方法は現在のところ不明。


IMSI

取得方法不明 ※情報求む

ECID

取得方法不明 ※情報求む


参考情報

Togetter - 「iPhoneアプリ「電波チェッカー」がUDID偽装可能だったことが発覚してからのまとめ」
アップル、iPhoneに対するジェイルブレイキングの弊害を強調 : [特集]iPhone/iPad - Computerworld.jp
「ECIDの変更が可能になれば、利用者の身元を特定できなくしたり(麻薬取引を行っている人物などには好都合)、通話料の請求を免れたりすることも可能になる」(Appleの提出文書より)
- - - - 間違いや補足、情報などあれば是非教えて下さい。追記・訂正します。

0 件のコメント:

コメントを投稿